anchor.diff:      This rule makes the component safe to construct under test without fear that it will do something dramatic like talk to the server.
       That's why we call the `HeroService` from within the `ngOnInit` rather than the constructor.
       
  +    我们强烈的推荐简单的结构函数。它们应该只用来初始化变量。这个规则让组件在测试环境中被安全的构造，免除他可能要去做一些非常戏剧化的动作（比如连接服务）的担心。
  +    这就是为什么我们在`ngOnInit`里面调用`HeroService`，而不是在构造函数中。
  +    
       We explain the mysterious `_afterGetHeroes` below.
  +    
  +    我们在下面解释这个神秘的`_afterGetHeroes`。
   :marked
     Users want to see the heroes in alphabetical order.
     Rather than modify the original component, we sub-class it and create a
  
positive.code:   +makeExample('cb-dependency-injection/ts/app/date-logger.service.ts','minimal-logger-transpiled')(format='.')
    :marked
       It never grows larger no matter how many members we add *as long as they are typed but not implemented*.
  
  a(id='opaque-token')
  :marked
    ### OpaqueToken
    
    Dependency objects can be simple values like dates, numbers and strings or 
    shapeless objects like arrays and functions.
    
    Such objects don't have application interfaces and therefore aren't well represented by a class.
    They're better represented by a token that is both unique and symbolic, 
    a JavaScript object that has a friendly name but won't conflict with 
    another token that happens to have the same name.
    
    The `OpaqueToken` has these characteristics.
    We encountered them twice in the *Hero of the Month* example, 
    in the *title* value provider and in the *runnersUp* factory provider.
  +makeExample('cb-dependency-injection/ts/app/hero-of-the-month.component.ts','provide-opaque-token')(format='.')   
  :marked
    We created the `TITLE` token like this:
  +makeExample('cb-dependency-injection/ts/app/hero-of-the-month.component.ts','opaque-token')(format='.')   
  
    
  
negative.code:   The `SortedHeroesComponent` lets the base class fetch the heroes.
    (we said it was contrived).
    
    用户希望看到英雄按字母顺序排序。与其修改原始的组件，我们衍生它，建立一个`SortedHeroesComponent`，用来在展示英雄之前进行排序。
    该`SortedHeroesComponent`让基本类来获取英雄。（我们说过这个是人为的）。
    
    Unfortunately, Angular cannot inject the `HeroService` directly into the base class.
    We must provide the `HeroService` again for *this* component, 
    then pass it down to the base class inside the constructor.
    
    可惜，Angular不能直接在基本类里直接注入`HeroService`。我们必须在*这个*组件里再次提供`HeroService`，然后通过构造函数传给基础类。
      
  +makeExample('cb-dependency-injection/ts/app/sorted-heroes.component.ts','sorted-heroes','app/sorted-heroes.component.ts (SortedHeroesComponent)') 
  :marked
  