anchor.diff:     without making any hardcoded assumptions about specific questions. 
      In addition to control metadata, we are also adding validation dynamically.
      
  -   这点非常重要的，因为只要与我们的*问卷*对象模型兼容，它允许我们为任何类型的调查重复使用这些组件。关键是运用动态数据绑定的元数据来渲染表单，不对问卷问题有任何硬性的假设。除了控制起元数据外，我们还可以动态添加验证规则。
  +   这点非常重要，因为只要与我们的*问卷*对象模型兼容，我们可以为任何类型的调查问卷重复使用这些组件。
  +   关键是运用动态数据绑定的元数据来渲染表单，不对问卷问题有任何硬性的假设。除了控制器元数据外，我们还可以动态添加验证规则。
   
      The *Save* button is disabled until the form is in a valid state. 
      When the form is valid, we can click *Save* and the app renders the current form values as JSON. 
      This proves that any user input is bound back to the data model.
      Saving and retrieving the data is an exercise for another time.
      
  -   在表单的验证通过之前，*保存*按钮是禁用的。当表单验证通过后，我们可以点击*保存*，程序会把当前的值渲染成为Json。它证明了任何用户输入都被传到了数据模型。如何储存和提取数据是另一个问题。
  +   在表单的验证通过之前，*保存*按钮是禁用的。当表单验证通过后，我们可以点击*保存*，程序会把当前的值渲染成为Json。
  +   它证明了任何用户输入都会被传到了数据模型里。如何储存和提取数据是另一话题。
   
   :marked
      The final form looks like this:
      
      完整表单看起来是这样：
  +   
   figure.image-display
      img(src="/resources/images/cookbooks/dynamic-form/dynamic-form.png" alt="Dynamic-Form")
   
  
positive.code:    The hero application process involves a form with a lot of questions. 
     The "question" is the most fundamental object in the model.
     
     第一步是定义一个对象模型，用来描述所有表单功能需要的场景。英雄申请流程涉及到一个有很多问卷问题的表单。问卷问题是最基础的对象模型。
  
     We have created `QuestionBase` as the most fundamental question class.
     
     下面是我们建立的非常基础的问卷问题类，名叫`QuestionBase`。
  
  +makeExample('cb-dynamic-form/ts/app/question-base.ts','','app/question-base.ts')
  
  
negative.code:    Next we have defined `QuestionControlService`, a simple service for transforming our questions to an ngForm control group. 
     In a nutshell, the control group consumes the metadata from the question model and allows us to specify default values and validation rules.
     
     接下来，我们定义了`QuestionControlService`，一个可以把我们的问卷问题转换为ngForm控制群的服务。
     简而言之，这个ngForm控制群使用问卷模型的元数据，允许我们设置默认值和验证规则。
     
  +makeExample('cb-dynamic-form/ts/app/question-control.service.ts',null,'app/question-control.service.ts')(format='.')
  
  <a id="form-component"></a>
  