block includes
  include ../_util-fns
  - var _JavaScript = 'JavaScript';
  //- Double underscore means don't escape var, use !{__var}.
  - var __chaining_op = '; or ,';
  - var __new_op = 'new';
  - var __objectAsMap = 'object';
:marked
  Our Angular application manages what the user sees and can do, achieving this through the interaction of a Component class instance (the *component*) and its user-facing template.
  Many of us are familiar with the component/template duality from our experience with model-view-controller (MVC) or model-view-viewmodel (MVVM). In Angular,  the component plays the part of the controller/viewmodel, and the template represents the view.
  Let’s find out what it takes to write a template for our view. We’ll cover these basic elements of template syntax:
  * [HTML](#html)
  * [Interpolation](#interpolation)
  * [Template expressions](#template-expressions)
  * [Template statements](#template-statements)
  * [Binding syntax](#binding-syntax)
  * [Property binding](#property-binding)
  * [Attribute, class, and style bindings](#other-bindings)
  * [Event binding](#event-binding)
  * [Two-way data binding](#two-way)
  * [Two-way data binding with `NgModel`](#ngModel)
  * [Built-in directives](#directives)
    * [NgClass](#ngClass)
    * [NgStyle](#ngStyle)
    * [NgIf](#ngIf)
    * [NgSwitch](#ngSwitch)
    * [NgFor](#ngFor)
  * [* and <template>](#star-template)
  * [Template reference variables](#ref-vars)
  * [Input and output properties](#inputs-outputs)
  * [Template expression operators](#expression-operators)
    * [pipe](#pipe)
    * [safe navigation operator (?.)](#safe-navigation-operator)
  The