anchor.diff:  :marked
     ### Test it
     ### 测试
  -  Tests click buttons of both the parent `MissionControlComponent` and the `AstronautComponent` children
  -  and verify that the *History* meets expectations:
  -  
  -  测试点击父级`MissionControlComponent`和子级`AstronautComponent`两个的组件的按钮，确认*History*日志和预期的一样。
  +  
  +  Tests click buttons of both the parent `MissionControlComponent` and the `AstronautComponent` children and verify that the *History* meets expectations:
  +  
  +  测试检查点击父级`MissionControlComponent`和子级`AstronautComponent`两个的组件的按钮时，*History*日志和预期的一样。
     
   +makeExample('cb-component-communication/e2e-spec.js', 'bidirectional-service')
   
  
positive.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属性值的变化Intercept
  
    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`的`name` Input属性的setter，修剪名字里面的空格和替换空值为默认文字。
    
  +makeExample('cb-component-communication/ts/app/name-child.component.ts')
  
  
negative.code: <a id="parent-to-child-on-changes"></a>
  :marked
    ## Intercept input property changes with *ngOnChanges*
    
    ## 通过*ngOnChanges*来截听Input属性值的变化
  
    Detect and act upon changes to input property values with the `ngOnChanges` method of the `OnChanges` lifecycle hook interface.
    
    使用`ngOnChanges`函数方法和`OnChanges`生命周期接口来监测Input属性值的变化并做出相应回应。
    
  .l-sub-section
    :marked
  