anchor.diff:      * `switchMap` calls our search service for each search term that makes it through the `debounce` and `distinctUntilChanged` gauntlet.
       It cancels and discards previous search observables, returning only the latest search service observable.
       
  -    * `switchMap`会为每个从`debounce`和`distinctUntilChanged`中通关的搜索词调用搜索服务。它会丢弃以前的搜索Observable，只保留最近的。
  +    * `switchMap`会为每个从`debounce`和`distinctUntilChanged`中通过的搜索词调用搜索服务。它会取消并丢弃以前的搜索可观察对象，只保留最近的。
   
     .l-sub-section
       :marked
  
positive.code:   Add this button element to the heroes component HTML, right after the hero
    name in the repeated `<li>` tag:
    
    把这个button元素添加到英雄列表组件的HTML中，把它放在`<li>`标签中的英雄名紧后边：
  
  +makeExcerpt('app/heroes.component.html', 'delete', '')
  
  
negative.code: 
    The `*ngFor` repeats *hero* objects from the component's `heroes` property. No surprise there.
    
    `*ngFor`从该组件的`heroes`属性重复获取*hero*对象。这也没啥特别的。
  
    But, as we'll soon see, the `heroes` property is now !{_an} *!{_Observable}* of hero !{_array}s, rather than just a hero !{_array}.
    The `*ngFor` can't do anything with !{_an} `!{_Observable}` until we flow it through the `async` pipe (`AsyncPipe`).
  