anchor.diff:      For more information, see [\* and &lt;template>](#star-template).
       
       不要忘记了`ngIf`前面的星号（`*`）。
  -    要了解更多，参见[\* 和 &lt;模板>](#star-template)。
  +    要了解更多，参见[\*与&lt;template>](#star-template)。
   // #enddocregion directives-ngIf-2
   // #docregion directives-ngIf-3
   :marked
  
positive.code:   :marked
      Don't forget the asterisk (`*`) in front of `ngFor`.
      For more information, see [\* and &lt;template>](#star-template).
  :marked
    The text assigned to `*ngFor` is the instruction that guides the repeater process.
  // #enddocregion directives-ngFor-3
  
  // #docregion directives-ngFor-4
  <a id="ngForMicrosyntax"></a>
  :marked
    #### NgFor microsyntax
    The string assigned to `*ngFor` is not a [template expression](#template-expressions).
    It’s a *microsyntax* &mdash; a little language of its own that Angular interprets. In this example, the string "let hero of heroes" means:
  
    >*Take each hero in the `heroes` array, store it in the local `hero` variable, and make it available to the templated HTML
    for each iteration.*
  
    Angular translates this instruction into a new set of elements and bindings.
  // #enddocregion directives-ngFor-4
  // #docregion directives-ngFor-5
  :marked
    In the two previous examples, the `ngFor` directive iterates over the `heroes` array returned by the parent component’s `heroes` property,
    stamping out instances of the element to which it is applied.
    Angular creates a fresh instance of the template for each hero in the array.
  
    The `let` keyword before "hero" creates a template input variable called `hero`.
  
  .alert.is-critical
    :marked
       A template input variable is **not** the same as a [template reference variable](#ref-vars)!
  
  :marked
    We use this variable within the template to access a hero’s properties,
    as we’re doing in the interpolation.
    We can also pass the variable in a binding to a component element,
    as we're doing with `hero-detail`.
  // #enddocregion directives-ngFor-5
  
  // #docregion directives-ngFor-6
  :marked
    #### NgFor with index
    The `ngFor` directive supports an optional `index` that increases from 0 to the length of the array for each iteration.
    We can capture the index in a template input variable and use it in our template.
  
    The next example captures the index in a variable named `i`, using it to stamp out rows like "1 - Hercules Son of Zeus".
  // #enddocregion directives-ngFor-6
  +makeExample('template-syntax/ts/app/app.component.html', 'NgFor-3')(format=".")
  // #docregion directives-ngFor-7
  .l-sub-section
    :marked
      Learn about other special *index-like* values such as `last`, `even`, and `odd` in the [NgFor API reference](../api/common/NgFor-directive.html).
  // #enddocregion directives-ngFor-7
  
  // #docregion directives-ngForTrackBy-1
  
negative.code:   However, the directive name is often a poor choice for the name of a property within the directive class.
    The directive name rarely describes what the property does.
    The `myClick` directive name is not a good name for a property that emits click messages.
    
    无论如何，在指令类中，直接用指令名作为属性名通常都不是好的选择。
    指令名很少能描述这个属性是干嘛的。
    `myClick`这个指令名对于用来发出click消息的属性就算不上一个好名字。
  
    Fortunately, we can have a public name for the property that meets conventional expectations,
    while using a different name internally.
    In the example immediately above, we are actually binding *through the* `myClick` *alias* to
    the directive's own `clicks` property.
    
    幸运的是，我们有一个约定俗成的公开名字，同时在内部使用一个不同的名字。
    在紧上面这个例子中，我们实际上是把`myClick`这个别名指向了指令自己的`clicks`属性。
  
    We can specify the alias for the property name by passing it into the input/output decorator like this:
    
    通过把别名传进@Input/@Output装饰器，我们可以为属性指定别名，就像这样：
  // #enddocregion inputs-outputs-6
  
  +makeExample('template-syntax/ts/app/my-click.directive.ts', 'my-click-output-1')(format=".")
  