anchor.diff:    Update the `CrisisDetailComponent` to get the crisis from the  `ActivatedRoute.data.crisis` property instead;
     that's where you said it should be when you re-configured the route.
     It will be there when the `CrisisDetailComponent` ask for it.
  +
  +  `CrisisDetailComponent`不应该再去获取这个危机的详情。
  +  把`CrisisDetailComponent`改成从`ActivatedRoute.data.crisis`属性中获取危机详情，这正是我们重新配置路由的恰当时机。
  +  当`CrisisDetailComponent`要求取得危机详情时，它就已经在那里了。
   
   +makeExcerpt('src/app/crisis-center/crisis-detail.component.ts (ngOnInit v2)', 'ngOnInit')
   
  
positive.code:   ### 惰性加载路由配置
  
    Change the `admin` **path** in the `admin-routing.module.ts` from `'admin'` to an empty string, `''`, the _empty path_. 
  
    The `Router` supports  *empty path* routes;
    use them to group routes together without adding any additional path segments to the URL. 
    Users will still visit `/admin` and the `AdminComponent` still serves as the *Routing Component* containing child routes.
  
    Open the `AppRoutingModule` and add a new `admin` route to its `appRoutes` array.
  
    Give it a `loadChildren` property (not a `children` property!), set to the address of the `AdminModule`.
    The address is the `AdminModule` file location (relative to the app root), 
    followed by a `#` separator, 
    followed by the name of the exported module class, `AdminModule`. 
  
  +makeExample('router/ts/src/app/app-routing.module.5.ts', 'admin-1', 'app-routing.module.ts (load children)')
  :marked
    When the router navigates to this route, it uses the `loadChildren` string to dynamically load the `AdminModule`.
    Then it adds the `AdminModule` routes to its current route configuration.
    Finally, it loads the requested route to the destination admin component. 
  
    The lazy loading and re-configuration happen just once, when the route is _first_ requested;
    the module and routes are available immediately for subsequent requests.
  
  .l-sub-section
    :marked
  
negative.code:   and move them into the `CrisisDetailResolver`.
    Import the `Crisis` model, `CrisisService`, and the `Router` 
    so you can navigate elsewhere if you can't fetch the crisis. 
  
    在`CrisisDetailComponent.ngOnInit`中拿到相关的危机检索逻辑，并且把它们移到`CrisisDetailResolver`中。
    导入`Crisis`模型、`CrisisService`和`Router`以便让我们可以在找不到指定的危机时导航到别处。
    
    Be explicit. Implement the `Resolve` interface with a type of `Crisis`. 
  
    为了更明确一点，可以实现一个带有`Crisis`类型的`Resolve`接口。
    
    Inject the `CrisisService` and `Router` and implement the `resolve()` method.
    That method could return a `Promise`, an `Observable`, or a synchronous return value.
  
    注入`CrisisService`和`Router`，并实现`resolve()`方法。
    该方法可以返回一个`Promise`、一个`Observable`来支持异步方式，或者直接返回一个值来支持同步方式。
  
    The `CrisisService.getCrisis` method returns a promise. 
    Return that promise to prevent the route from loading until the data is fetched. 
    If it doesn't return a valid `Crisis`, navigate the user back to the `CrisisListComponent`, 
    canceling the previous in-flight navigation to the `CrisisDetailComponent`.
  
    `CrisisService.getCrisis`方法返回了一个`Promise`。
    返回`Promise`可以阻止路由被加载，直到数据获取完毕。
    如果它没有返回一个有效的`Crisis`，就把用户导航回`CrisisListComponent`，并取消以前到`CrisisDetailComponent`尚未完成的导航。
  
    Import this resolver in the `crisis-center-routing.module.ts` 
    and add a `resolve` object to the `CrisisDetailComponent` route configuration.
  
    把这个解析器（resolver）导入到`crisis-center-routing.module.ts`中，并往`CrisisDetailComponent`的路由配置中添加一个`resolve`对象。
  
    Remember to add the `CrisisDetailResolver` service to the `CrisisCenterRoutingModule`'s `providers` array.
  
    别忘了把`CrisisDetailResolver`服务添加到`CrisisCenterRoutingModule`的`providers`数组中。
  
  +makeExcerpt('src/app/crisis-center/crisis-center-routing.module.4.ts (resolver)', 'crisis-detail-resolver')
  
  