anchor.diff:    The next page, `Forms`, explains how to write
     two-way bindings with `NgModel`.
   
  -
  +  这些技术对小规模演示很实用，但是在处理大量用户输入时很容易变得累赘和笨拙。
  +  双向数据绑定是更加优雅和简洁的在数据输入区域和模型属性之间传递数据的方式。
  +  下一页`表单`解释了如何用`NgModel`来进行双向绑定。
  +
  +
  
positive.code:     The `newHero` template variable refers to the `<input>` element.
      You can reference `newHero` from any sibling or child of the `<input>` element.
  
      * **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`.
  
      * **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.
  
  .l-main-section
  :marked
  
negative.code:   :marked
      Alternatively, you could accumulate the individual keys themselves by substituting `event.key`
      for `event.target.value` in which case the same user input would produce:
  
      另外，你可以通过用`event.key`来为`event.target.value`积累各个按键本身，这样同样的用户输入可以产生：
    code-example().
      a | b | c | backspace | backspace | backspace |
  
  a#keyup1
  :marked
    ### Type the _$event_
  
    ### *$event*的类型
  
    The example above casts the `$event` as an `any` type.
    That simplifies the code at a cost.
    There is no type information
    that could reveal properties of the event object and prevent silly mistakes.
  
    上例将`$event`转换为`any`类型。
    这样简化了代码，但是有成本。
    没有任何类型信息来显示事件对象的属性并防止简单的错误。
  
    The following example rewrites the method with types:
  
    下面的例子用`type`重写了该方法：
  +makeExample('user-input/ts/app/keyup.components.ts', 'key-up-component-1-class', 'app/keyup.components.ts (class v.1 - typed )')(format=".")
  
  :marked
  