anchor.diff:  :marked
     Then we modify the template HTML elements to match the _reactive forms_ style.
     Here is the "name" portion of the template again, revised for reactive forms and compared with the template-driven version:
  +
  +  接下来，我们修改模板HTML元素，来匹配**响应式表单**样式。
  +  下面又是“name”部分的模板，响应式表单修改版本和模板驱动版本的比较：
  +
   +makeTabs(
     `cb-form-validation/ts/app/reactive/hero-form-reactive.component.html, 
      cb-form-validation/ts/app/template/hero-form-template2.component.html`,
  
positive.code:    to the elements. Angular interprets those as well, adding validator functions to the control model.
  
     要验证用户输入，你添加[HTML验证属性](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation)到元素中。
     Angular拦截这些元素，添加验证器功能到控制模型中。
  
     Angular exposes information about the state of the controls including 
     whether the user has "touched" the control or made changes and if the control values are valid.
  
negative.code:   You must use the `Angular TestBed` to create component test instances,
    write asynchronous tests, and interact with the DOM.
  
    这对**模板驱动**表单来说是不可能的。
    模板驱动方法依靠Angular来生成控制器模型并从HTML验证属性中衍生验证规则。
    你必须使用`Angular TestBed`来创建组件测试实例，编写异步测试并与DOM交互。
  
    While not difficult, this takes more time, work and skill &mdash; 
    factors that tend to diminish test code coverage and quality.
  
    虽然这种测试并不困难，但是它需要更多时间、工作和能力 - 这些因素往往会降低测试代码覆盖率和测试质量。
  