anchor.diff:    The requests keep bubbling up until we find an injector that can handle the request or run out of component ancestors.
     If we run out of ancestors, Angular throws an error.
     
  -  当一个底层的组件申请获得一个依赖时，Angular先尝试用该组件自己的注入器来满足它。
  +  当一个底层的组件申请获得一个依赖时，Angular 先尝试用该组件自己的注入器来满足它。
     如果该组件的注入器没有找到对应的提供商，它就把这个申请转给它父组件的注入器来处理。
     如果那个注入器也无法满足这个申请，它就继续转给*它的*父组件的注入器。
     这个申请继续往上冒泡 —— 直到我们找到了一个能处理此申请的注入器或者超出了组件树中的祖先位置为止。
  -  如果超出了组件树中的祖先还未找到，Angular就会抛出一个错误。
  +  如果超出了组件树中的祖先还未找到，Angular 就会抛出一个错误。
   
   .l-sub-section
     :marked
  
positive.code:   We can reconfigure the injectors at any level of that component tree with
    interesting and useful results.
    
    Angular有一个多级依赖注入系统。
    实际上，应用程序中有一个与组件树平行的注入器树(译注：平行是指结构完全相同且一一对应)。
    我们可以在组件树中的任何级别上重新配置注入器，达到一些有趣和有用的效果。
  
    In this chapter we explore these points and write some code.
  
negative.code: .l-main-section
  :marked
    ## Component Injectors
  
    ## 组件注入器
  
    In the previous section, we talked about injectors and how they are organized like a tree. Lookups follow the injector tree upwards until they find the requested thing to inject. But when do we actually want to provide providers on the root injector and when do we want to provide them on a child injector?
    
    在前一节中，我们讨论了注入器以及它们是如何被组织成一棵树的。Angular 会沿着注入器树往上逐级查找，直到发现了那个申请者要求注入的东西。
    但是，我们什么时候该在根注入器上提供提供商，什么时候又该在子注入器上提供它们呢？
  
    Consider you are building a component to show a list of super heroes that displays each super hero in a card with its name and superpower. There should also be an edit button that opens up an editor to change the name and superpower of our hero.
  