anchor.diff:  :marked
     All this tiny service does is define an API to set a value of any type which can be altered, retrieved or set back to its initial value. That’s exactly what we need to implement the desired functionality.
     
  -  这个微型服务唯一所做的是定义一个API来设置一个任意类型的值，它可以被修改、获取或者恢复成初始值。
  +  这个微型服务唯一所做的是定义一个 API 来设置一个任意类型的值，它可以被修改、获取或者恢复成初始值。
     这正是我们需要实现的功能。
   
     Our `HeroEditComponent` uses this services under the hood for its `hero` property. It intercepts the `get` and `set` method to delegate the actual work to our `RestoreService` which in turn makes sure that we won’t work on the original item but on a copy instead.
     
  -  我们的`HeroEditComponent`组件悄悄把这个服务用在它的`hero`属性上。它拦截了`get`和`set`方法，并把真正的工作委托给我们的`RestoreService`服务，这样可以确保我们并不是在操作原始条目，而是一个副本。
  +  我们的`HeroEditComponent`组件在幕后把这个服务用在它的`hero`属性上。它拦截了`get`和`set`方法，并把真正的工作委托给我们的`RestoreService`服务，这样可以确保我们并不是在操作原始条目，而是一个副本。
   
     At this point we may be scratching our heads asking what this has to do with component injectors?
     Look closely at the metadata for our `HeroEditComponent`. Notice the `providers` property.
  
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.
  