anchor.diff:  // #enddocregion directives-ngForTrackBy-3
   
   // #docregion star-template
  -<a name="star-template"></a>
  -<a name="structural-directive"></a>
  +<a id="star-template"></a>
  +<a id="structural-directive"></a>
   .l-main-section
   :marked
     ## * and &lt;template&gt;
  
positive.code: // #docregion directives-1
  .l-main-section
  :marked
    <a name="directives"></a>
    ## Built-in directives
  
    Earlier versions of Angular included over seventy built-in directives.
  
negative.code: +makeExample('template-syntax/ts/app/app.component.html', 'without-NgModel')(format=".")
  // #docregion ngModel-4
  :marked
    That’s cumbersome. Who can remember which element property to set and what event reports user changes?
    How do we extract the currently displayed text from the input box so we can update the data property?
    Who wants to look that up each time?
  
    That `ngModel` directive hides these onerous details behind its own  `ngModel` input and `ngModelChange` output properties.
  // #enddocregion ngModel-4
  +makeExample('template-syntax/ts/app/app.component.html', 'NgModel-3')(format=".")
  // #docregion ngModel-5
  .l-sub-section
    :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
      that implement one of a few patterns such as the input box's `value` property and `change` event. 
      We can't simply apply `[(ngModel)]` to our custom components unless we write them to conform.
      
  :marked
    That’s an improvement, but it could be better.
  
  