anchor.diff:    once for the (*) prefixed version and once for the expanded template version.
     That's exactly what we see in this example:
     
  -  这种情况下，它管理两组`NgSwitchWhen`和`NgSwitchDefault`指令。
  -  我们期待它应该显示所选模板的值两次，一次是（*）前缀的版本，一次是展开模板后的版本。
  -  这正是我们在这个例子中看到的：
  +  上面这种情况下，它管理两组`NgSwitchWhen`和`NgSwitchDefault`指令，一次是（*）前缀的版本，一次是展开模板后的版本。
  +  我们也期待它显示所选模板的值两次。这正是我们在这个例子中看到的：
   figure.image-display
       img(src='/resources/images/devguide/template-syntax/ng-switch-anim.gif' alt="NgSwitch")
   :marked
  
positive.code:   Throwing an exception is the right thing to do.
    
    如果确信`hero`属性永远不可能为空，我们就可以声称这是一个合理的行为。
    如果它必须不能为空，但它仍然是空值，我们就可以制造一个编程错误，以便它被捕获和修复。
    这种情况下，抛出一个异常正是我们应该做的。
  
    On the other hand, null values in the property path may be OK from time to time,
    especially when we know the data will arrive eventually.
    
    另一方面，属性路径中的空值可能只是暂时的，特别是当我们知道这些数据最终总会到来的时候。
  
    While we wait for data, the view should render without complaint, and
    the null property path should display as blank just as the `title` property does.
    
    当我们等待数据的时候，视图渲染器不应该抱怨，而应该把这个空属性路径显示为空白，就像`title`属性所做的那样。
  
    Unfortunately, our app crashes when the `currentHero` is null.
    
  
negative.code: 
    It can be used with native DOM elements but also with Angular 2 components &mdash; in fact, it will work with any custom web component.
    
    它能在原生DOM元素中使用，也能用于Angular 2组件 —— 实际上，它可以和任何自定义Web组件协同工作。
  
  :marked
    ### Referencing a template reference variable
  