anchor.diff:    with the current instance of our `component`, the current `ActivatedRoute` and `RouterStateSnapshot` in case we needed to access
     some external information. This would be useful if we only wanted to use this guard for this component and needed to ask the component's
     properties in or to confirm whether the router should allow navigation away from it.
  +
  +  另外，我们也可以为`CrisisDetailComponent`创建一个特定的`CanDeactivate`守卫。在需要访问外部信息时，`canDeactivate`方法为提供了组件、`ActivatedRoute`和`RouterStateSnapshot`的当前实例。如果只想为这个组件使用该守卫，并且需要使用该组件属性、或者需要路由器确认是否允许从该组件导航出去时，这个守卫就非常有用。
   +makeExample('router/ts/app/can-deactivate-guard.service.1.ts', '', 'can-deactivate-guard.service.ts (component-specific)')
   
   :marked
  
positive.code: :marked
    ## Milestone #5: Asynchronous Routing
  
    As we have completed our milestones, our application has naturally gotten larger. As we continue to build
    out feature areas our overall application size will get larger also. At some point we'll reach a tipping
    point in where our application takes a significant enough time to load. This is not a viable long term solution.
  
    So how do we combat this problem? We introduce asynchronous routing into our application and take advantage of loading
    feature areas _lazily_. This buys us multiple things:
  
    We can continue building out feature areas without increasing our initial bundle.
    We can load feature areas only when requested by the user.
    We can speed up load time for users that only visit certain areas of our application.
  
    These are all things we want to have in our application, so let's apply this to our current setup. We've already made
    great strides by organizing our application into three modules: `AppModule`, `HeroesModule` and `CrisisCenterModule`.
    Our `CrisisCenterModule` is the most feature-rich area of our application and also the largest, so we'll take advantage
    of asynchronous routing and only load the `Crisis Center` feature area when requested.
  
  :marked
    ### Lazy-Loading route configuration
  
    We'll start by pulling our `redirect` and `crisis-center` routes out of our `CrisisCenterModule` and including them in our
    `app.routing.ts` file. We want to load our `Crisis Center` asynchronously, so we'll use the `loadChildren` property in
    our route config where previously we used the `children` property to include our child routes.
  
    We'll also change our `crisis-center` **path** in our `crisis-center.routing.ts` to an empty path. The `Router` supports
    *empty path* routes, which we can use for grouping routes together without adding anything additional paths to the URL. Our
    users will still visit `/crisis-center` and our `CrisisCenterComponent` still serves as our *Routing Component* which contains
    our child routes.
  
  +makeTabs(
    `router/ts/app/app.routing.6.ts,
  
negative.code: 
  <a id="Resolve"></a>
  h3#resolve-guard <i>Resolve</i>: pre-fetching component data
  h3#resolve-guard <i>解析</i>: 提前获取组件数据
  :marked
    In our `Hero Detail` and `Crisis Detail`, we waited until the route was activated to fetch our respective hero or crisis.
  
    
  
    This worked well for us, but we can always do better.
    If we were using a real world api, there may be some delay in when the data we want to display gets returned.
  