anchor.diff:    So we convert the route parameter value to a number with the !{_str2int}.
   
     英雄的`id`是数字，而路由参数的值*总是字符串*。
  -  所以我们需要通过JavaScript的(+)操作符把路由参数的值转成数字。
  +  所以我们需要通过 JavaScript 的 (+) 操作符把路由参数的值转成数字。
   
   +ifDocsFor('ts')
   .l-sub-section
  
positive.code:   They've given us ~60 lines of CSS for this purpose including some simple media queries for responsive design.
  
    设计师认为我们应该把仪表盘的英雄们显示在一排方块中。
    它们给了我们大约60行CSS来实现它，包括一些简单的媒体查询语句来实现响应式设计。
  
    If we paste these ~60 lines into the component `styles` metadata,
    they'll completely obscure the component logic.
    Let's not do that. It's easier to edit CSS in a separate `*.css` file anyway.
  
    如果我们把这60来行CSS粘贴到组件元数据的`styles`中，它们会完全淹没组件的工作逻辑。
    不能这么做。在一个独立的`*.css`文件中编辑CSS当然会更简单。
  
    Add a <span ngio-ex>dashboard.component.css</span> file to the `!{_appDir}` folder and reference
    that file in the component metadata's `styleUrls` !{_array} property like this:
  
negative.code:     Note how the `switchMap` operator maps the id in the observable route parameters
      to a new `Observable`, the result of the `HeroService.getHero` method.
  
      注意`switchMap`运算符如何将可观察的路由参数中的 id 映射到一个新的`Observable`，
      即`HeroService.getHero`方法的结果。
  
      If the user re-navigates to this component while a getHero request is still inflight,
      switchMap cancels that old request before calling `HeroService.getHero` again.
  
      如果用户在 getHero 请求执行的过程中再次导航这个组件，switchMap 再次调用`HeroService.getHero`之前，
      会取消之前的请求。
  
  - var _str2int = _docsFor == 'dart' ? '<code>int.parse</code> static method' : 'JavaScript (+) operator'
  