anchor.diff:    `HeroDetailComponent.deleteRequest`是一个相对于`HeroDetailComponent`视角的**输出**属性，因为事件流来自这个属性，并且被模板绑定语句所处理。
   
   h3#aliasing-io Aliasing input/output properties
  -:marked
  -  ### Aliasing input/output properties
  -  ### 输入/输出属性的别名
  -
  +h3#aliasing-io 输入/输出属性别名
  +:marked
     Sometimes we want the public name of an input/output property to be different from the internal name.
     
     有时我们需要让输入/输出属性的公开名字不同于内部名字。
  
positive.code:   In this case, we have to remember to create and assign the `NgForOf` directive that identifies the list and the `NgForTrackBy` directive.
    Using the `*ngFor` syntax is much easier than writing out this expanded HTML ourselves.
    
    `NgFor`的代码相对`NgIf`更复杂一点，因为一个重复器有更多可配置的活动部分。
    这种情况下，我们不得不记着创建并对用于标记列表的`NgForOf`指令和`NgForTrackBy`指令赋值。
    使用`*ngFor`语法比直接写这些展开后的HTML本身要简单多了。
  
  <a id="ref-vars"></a>
  
negative.code:   When the user clicks *delete*, the component invokes the `delete()` method
    which tells the `EventEmitter` to emit a `Hero` object.
    
    组件定义了一个`deleteRequest`属性，它是一个`EventEmitter`实例。(译注：`deleteRequest`属性是导出Output属性，是组件与父级组件交互的主要方式之一。参见[输入和输出属性](#input-and-output-properties)和[父组件监听子组件的事件](docs/ts/latest/cookbook/component-communication.html#!#child-to-parent)。我们需要用`@Output()`来装饰它，或者把它添加到组件元数据的`outputs`数组中，它才能在父级组件可见。）
    当用户点击*删除*时，组件会调用`delete()`方法，这个方法告诉`EventEmitter`，发出一个`Hero`对象。
  
    Now imagine a hosting parent component that binds to the `HeroDetailComponent`'s `deleteRequest` event.
  