anchor.diff:  
   
   
  +  最初的`name`属性是个空字符串，在*name*输入框中输入之后，可以看到这些按键出现在了JSON中。
  +  
  +
   :marked
     Great! You have the basics of a form. 
  +  
  +  真棒！我们有了一个基本版表单。
     
     In real life apps, forms get big fast. 
     `FormBuilder` makes form development and maintenance easier.
   
  +  
  +  在真实的应用中，表单很快就会变大。
  +  `FormBuilder`能让表单开发和维护变得更简单。
   
   .l-main-section
   a#formbuilder
   :marked
     ## Introduction to _FormBuilder_
  +  
  +  ## `FormBuilder`简介
   
     The `FormBuilder` class helps reduce repetition and 
     clutter by handling details of control creation for you. 
  +  
  +  `FormBuilder`类能通过处理控件创建的细节问题来帮我们减少重复劳动。
   
     To use `FormBuilder`, you need to import it into `hero-detail.component.ts`:
  +  
  +  要使用`FormBuilder`，我们就要先把它导入到`hero-detail.component.ts`中：
  +  
   +makeExample('reactive-forms/ts/src/app/hero-detail-3a.component.ts', 'imports','src/app/hero-detail.component.ts (excerpt)')(format=".")
   
   :marked
     Use it now to refactor the `HeroDetailComponent` into something that's a little easier to read and write,
     by following this plan:
  +  
  +  现在，我们遵循下列步骤用`FormBuilder`来把`HeroDetailComponent`重构得更加容易读写。
   
     * Explicitly declare the type of the `heroForm` property to be `FormGroup`; you'll initialize it later.
  +  
  +    明确把`heroForm`属性的类型声明为`FormGroup`，稍后我们会初始化它。
  +    
     * Inject a `FormBuilder` into the constructor.
  +  
  +    把`FormBuilder`注入到构造函数中。
  +    
     * Add a new method that uses the `FormBuilder` to define the `heroForm`; call it `createForm`.
  +  
  +    添加一个名叫`createForm`的新方法，它会用`FormBuilder`来定义`heroForm`。
  +    
     * Call `createForm` in the constructor.
  +  
  +    在构造函数中调用`createForm`。
   
     The revised `HeroDetailComponent` looks like this:
  +  
  +  修改过的`HeroDetailComponent`代码如下：
  +  
   +makeExample('reactive-forms/ts/src/app/hero-detail-3a.component.ts', 'v3a','src/app/hero-detail.component.ts (excerpt)')(format=".")
   
   :marked
     `FormBuilder.group` is a factory method that creates a `FormGroup`. &nbsp;
     `FormBuilder.group` takes an object whose keys and values are `FormControl` names and their definitions. 
     In this example, the `name` control is defined by its initial data value, an empty string.
  +  
  +  `FormBuilder.group`是一个用来创建`FormGroup`的工厂方法，它接受一个对象，对象的键和值分别是`FormControl`的名字和它的定义。
  +  在这个例子中，`name`控件的初始值是空字符串。
   
     Defining a group of controls in a single object makes for a compact, readable style.
     It beats writing an equivalent series of `new FormControl(...)` statements.
  +  
  +  把一组控件定义在一个单一对象中，可以更加紧凑、易读。
  +  完成相同功能时，这种形式优于一系列`new FormControl(...)`语句。
   
   a#validators
   :marked
    ### Validators.required
  + 
    Though this guide doesn't go deeply into validations, here is one example that 
    demonstrates the simplicity of using `Validators.required` in reactive forms. 
   
  
positive.code:   in the class. This syntax tells Angular to look for the parent 
    `FormGroup`, in this case `heroForm`, and then _inside_ that group 
    to look for a `FormControl` called `name`.
  
  .l-sub-section
    :marked
  
negative.code:   `FormGroup` instance and associates it with an HTML element. 
    In this case, it associates the `FormGroup` you saved as 
    `heroForm` with the form element.
    
    `formGroup`是一个响应式表单的指令，它拿到一个现有`FormGroup`实例，并把它关联到一个HTML元素上。
    这种情况下，它关联到的是`form`元素上的`FormGroup`实例`heroForm`。
  
    Because the class now has a `FormGroup`, you must update the template 
    syntax for associating the input with the corresponding 
  