anchor.diff:      The *CanLoad* guard blocks loading of feature module assets until authorized to do so. If you want to both preload a module and guard
       against unauthorized access, use the [CanActivate](#can-activate-guard) guard instead.
   
  +    **PreloadAllModules**策略不会加载被[CanLoad](#can-load-guard)守卫保护的特征区域，这是因为Angular是这样设计的。
  +    *CanLoad*守卫阻挡加载特征模块资源，直到授权为止。如果你希望预加载一个模块并保护未授权访问，使用[CanActivate](#can-activate-guard)守卫。
  +
   :marked
     We'll update our route configuration to lazy load the *CrisisCenterModule*. We follow the same process as we did when we loaded the *AdminModule* asynchronously.
     In the *crisis-center-routing.module.ts*, we'll change the *crisis-center* path to an *empty path* route.
   
  +  使用与加载异步*AdminModule*一样流程，我们将更新路由配置，来惰性加载*CrisisCenterModule*。
  +  在*crisis-center-routing.module.ts*中，将*crisis-center*的路径修改为*空路径*。
  +
     We'll move our redirect and *crisis-center* route to our `AppRoutingModule` routes and use the `loadChildren` string to load the *CrisisCenterModule*.
     The redirect is also changed to load the `/heroes` route on initial load.
   
  +  接下来，将*redirect*和*crisis-center*路由移动到`AppRoutingModule`路由，并使用`loadChildren`字符串来加载*CrisisCenterModule*。
  +  *redirect*也被修改为初始加载`/heroes`路由。
  +
     Once we're finished, we'll remove the `CrisisCenterModule` from our `AppModule`'s imports.
   
  +  然后将`CrisisCenterModule`移到`AppModule`的`imports`中。
  +
     Here are the updated modules _before enabling preload_:
  +
  +  下面是打开预加载之前的模块修改版：
   
   +makeTabs(
      `router/ts/app/app.module.ts,
  
positive.code:   with this `PreloadAllModules` token. 
    This tells the built-in *Router* pre-loader to immediately load **all** [unguarded](#preload-canload) feature areas that use `loadChildren`.
  
  +makeExcerpt('app/app-routing.module.6.ts (preload all)', '')
  
  :marked
    Now when we visit `http://localhost:3000`, the `/heroes` route will load in the foreground, while the *CrisisCenterModule* and any other asynchronous feature
    modules are _eagerly_ loaded in the background, waiting for us to navigate to them.
  
  <a id="custom-preloading"></a>
  :marked
    ### Custom Pre-Loading Strategy
  
    Pre-loading all modules works well in some situations, but in some cases we need more control over what gets loaded eagerly. This becomes more clear
    as we load our application on a mobile device, or a low bandwidth connection. We may only want to preload certain feature modules based on user metrics
    or other data points we gather over time. The *Router* lets us have more control with a **custom** preloading strategy.
  
    We can define our own strategy the same way the **PreloadAllModules** modules strategy was provided to our *RouterModule.forRoot* configuration object.
  
    Since we want to take advantage of this, we'll add a custom strategy that _only_ preloads the modules we select. We'll enable the preloading by using the *Route Data*,
    which, as we learned, is an object to store arbitrary route data and and [resolve data](#resolve-guard).
  
    We'll add a custom `preload` boolean to our `crisis-center` route data that we'll use with our custom strategy. To see it in action, we'll add 
    the `route.path` to the `preloadedModules` array in our custom strategy service. We'll also log a message
    to the console for the preloaded module.
  
  +makeExcerpt('app/app-routing.module.ts (route data preload)', 'preload-v2')
  
  :marked
  
negative.code:   Once our application is loaded to our initial route, the *CrisisCenterModule* is loaded eagerly. We can verify this by logging in to the `Admin` feature area and
    noting that the `crisis-center` is listed in the `Preloaded Modules` and logged to the console. We can continue to add feature modules to be selectively loaded eagerly.
  
    一旦应用加载到初始路由，*CrisisCenterModule*被主动加载了。要验证它，登录到`Admin`特征区域，注意`crisis-center`被列到`Preloaded Modules`并输出到控制台。
    我们可以继续添加特征区域，以便有选择的加载它们。
  
  <a id="final-app"></a>
  
  