anchor.diff:    Not all elements have a `value` property so it casts `target` to an input element.
     The `OnKey` method more clearly expresses what it expects from the template and how it interprets the event.
   
  +  `$event`的类型现在是`KeyboardEvent`。
  +  不是所有的元素都有`value`属性，所以它将`target`转换为输入元素。
  +  `OnKey`方法更加清晰的显示了它从模板中期待什么，以及它是如何解析事件的。
  +
     ### Passing _$event_ is a dubious practice
  +
  +  ### 传入*$event*是可疑的做法
  +
     Typing the event object reveals a significant objection to passing the entire DOM event into the method:
     the component has too much awareness of the template details.
     It can't extract information without knowing more than it should about the HTML implementation.
     That breaks the separation of concerns between the template (_what the user sees_)
     and the component (_how the application processes user data_).
   
  +  类型化事件对象揭露了重要的一点，即反对把整个DOM事件传到方法中。因为这样组件会知道太多模板的信息。
  +  只有当它了解一些它本不需要了解的 HTML 实现细节时，它才能提取信息。
  +  这就违反了模板（*用户看到的*）和组件（*应用如何处理用户数据*）之间的分离关注原则。
  +
     The next section shows how to use template reference variables to address this problem.
  +
  +  下面将介绍如何用模板引用变量来处理这个问题。
   
   .l-main-section
   :marked
  
positive.code:   The next page, `Forms`, explains how to write
    two-way bindings with `NgModel`.
  
  
  
negative.code:     The `newHero` template variable refers to the `<input>` element.
      You can reference `newHero` from any sibling or child of the `<input>` element.
  
      * **使用模板变量来引用元素** —`newHero`模板变量引用了`<input>`元素。
      你可以在`<input>`的任何兄弟或子级元素中使用`newHero`。
  
      * **Pass values, not elements** &mdash;
      Instead of passing the `newHero` into the component's `addHero` method,
      get the input box value and pass *that* to `addHero`.
  
      * **传递数值，而非元素** — 获取输入框的值并将*它*传递给组件的`addHero`，而不要传递`newHero`。
  
      * **Keep template statements simple** &mdash;
      The `(blur)` event is bound to two JavaScript statements.
      The first statement calls `addHero`.  The second statement, `newHero.value=''`,
      clears the input box after a new hero is added to the list.
  
      * **保持模板语句简单** — `(blur)`事件被绑定到两个 JavaScript 语句。第一句调用`addHero`。第二句`newHero.value=''`在添加新英雄到列表中后清除输入框。
  
  .l-main-section
  :marked
  