anchor.diff:  
   :marked
     As the Tour of Heroes app evolves, you'll add more components that need access to hero data.
  +  
  +  随着《英雄指南》的成长，我们要添加更多需要访问英雄数据的组件。
   
     Instead of copying and pasting the same code over and over,
     you'll create a single reusable data service and
     inject it into the components that need it.
     Using a separate service keeps components lean and focused on supporting the view,
     and makes it easy to unit-test components with a mock service.
  +  
  +  为了不再把相同的代码复制一遍又一遍，我们要创建一个单一的可复用的数据服务，并且把它注入到需要它的那些组件中。
  +  使用单独的服务可以保持组件精简，使其集中精力为视图提供支持，并且，借助模拟（Mock）服务，可以更容易的对组件进行单元测试。
   
     Because data services are invariably asynchronous,
     you'll finish the page with a *Promise*-based version of the data service.
  +  
  +  由于数据服务总是异步的，因此我们最终会提供一个基于承诺（Promise）的数据服务。
   
     When you're done with this page, the app should look like this <live-example></live-example>.
   
  
positive.code:     我们遵循的文件命名约定是：服务名称的小写形式（基本名），加上`.service`后缀。
      如果服务名称包含多个单词，我们就把基本名部分写成中线形式 ([dash-case](../guide/glossary.html#dash-case))。
      例如，`SpecialSuperHeroService`服务应该被定义在`special-super-hero.service.ts`文件中。
  :marked
    Name the class `HeroService` and export it for others to import.
  
  
negative.code:   在真实的世界中，我们并不需要把一行代码包装成一个专门的方法，但无论如何，我们在演示代码中先这么写：
  
  +makeExcerpt('toh-4/ts/src/app/app.component.1.ts', 'getHeroes', 'src/app/app.component.ts')
  
  <a id="oninit"></a>
  
  :marked
    ### The *ngOnInit* lifecycle hook
    
  