anchor.diff:    ## Two-way binding with NgModel
     When developing data entry forms, we often want to both display a data property and update that property when the user makes changes.
   
  -  The `NgModel` directive serves that purpose, as in this example:
  +  The `[(NgModel)]` two-way data binding syntax makes that easy. Here's an example:
   // #enddocregion ngModel-1
   +makeExample('template-syntax/ts/app/app.component.html', 'NgModel-1')(format=".")
   // #docregion ngModel-2
  
positive.code: :marked
    There’s a story behind this construction, a story that builds on the property and event binding techniques we learned previously.
  
    We could have achieved the same result as `NgModel` with separate bindings to
    the `<input>` element's  `value` property and `input` event.
  // #enddocregion ngModel-3
  +makeExample('template-syntax/ts/app/app.component.html', 'without-NgModel')(format=".")
  
negative.code:   :marked
      The `ngModel` input property sets the element's value property and the `ngModelChange` output property 
      listens for changes to the element's value.
      The details are specific to each kind of element and therefore the `NgModel` directive only works for elements,
      such as the input text box, that are supported by a [ControlValueAccessor](../api/common/ControlValueAccessor-interface.html).
      We can't apply `[(ngModel)]` to our custom components until we write a suitable *value accessor*,
      a technique that is out of scope for this chapter.
      
  :marked
    Separate `ngModel` bindings is an improvement. We can do better.
    
    We shouldn't have to mention the data property twice. Angular should be able to capture the component’s data property and set it
    with a single declaration &mdash; which it can with the `[( )]` syntax:
  // #enddocregion ngModel-5
  +makeExample('template-syntax/ts/app/app.component.html', 'NgModel-1')(format=".")
  