anchor.diff:  :marked
     ### Test it
     ### 测试
  +  
     E2E test that all children were instantiated and displayed as expected:
     
  -  端对端测试，以确认所有子级初始化和显示的和我们预期的一样。
  +  实施端对端测试，以确认所有子级的初始化和显示与我们预期的一样。
     
   +makeExample('cb-component-communication/e2e-spec.js', 'parent-to-child')
   
  
positive.code:   ## Parent calls a *ViewChild*
    ## 父级调用*ViewChild*
    
    The *local variable* approach is simple and easy. But it is limited because 
    the parent-child wiring must be done entirely within the parent template.
    The parent component *itself* has no access to the child.
    
    上面*本地变量*的方法是一个简单和方便的方法。但是它有局限性，因为父级-子级的连接必须要全部都在父级的模板里面进行。父级组件本身对子级没有访问权。
    
    We can't use the *local variable* technique if an instance of the parent component *class*
    must read or write child component values or must call child component methods.
    
    如果父级组件的*类*需要读或取子级组件值或者调用子级组件的方法，我们就不能使用*本地变量*方法。
    
    When the parent component *class* requires that kind of access, 
    we ***inject*** the child component into the parent as a *ViewChild*.
    
    当父级组件*类*需要这种访问，我们把一个子级组件作为*ViewChild*，***注入***到父级组件里面。
    
    We'll illustrate this technique with the same [Countdown Timer](#countdown-timer-example) example. 
    We won't change its appearance or behavior. 
    The child [CountdownTimerComponent](#countdown-timer-example) is the same as well.
    
    我们将会用一样的[倒计时](#countdown-timer-example)例子来解释这种技巧。
    我们不会变化它的样子或行为。子级[CountdownTimerComponent](#countdown-timer-example)和原来也一样。
  .l-sub-section
    :marked
      We are switching from the *local variable* to the *ViewChild* technique
      solely for the purpose of demonstration.
      
      我们由*本地变量*切换到*ViewChild*技巧的唯一目的是做示范。
  :marked
    Here is the parent, `CountdownViewChildParentComponent`:
    
    这个是父级，`CountdownViewChildParentComponent`:
  +makeExample('cb-component-communication/ts/app/countdown-parent.component.ts', 'vc')
  :marked
    It takes a bit more work to get the child view into the parent component classs.
  
negative.code:   [Back to top](#top)
    
    [返回到顶部](#top)
    
  .l-main-section
  <a id="parent-to-child-setter"></a>
  :marked
    ## Intercept input property changes with a setter
    
    ## 通过setter截听Input属性值的变化
  
    Use an input property setter to intercept and act upon a value from the parent.
    
    使用一个Input属性setter，在父级拦截子级属性，并针对属性值的变化采取行动。
    
    The setter of the `name` input property in the child `NameChildComponent` trims the whitespace from a name and replaces an empty value with default text.
    
    这个在子组件`NameChildComponent`的Input属性`name`的setter，用来修剪名字里面的空格，并替换空值为默认字符串。
    
  +makeExample('cb-component-communication/ts/app/name-child.component.ts')
  
  