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:   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.
  
  
  <a id="final-app"></a>
  
  
negative.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`.
  
    `RouterModule.forRoot`方法的第二个参数接受一个附加配置选项对象。
    我们从路由器包导入`PreloadAllModules`令牌，并将这个配置选项的`preloadingStrategy`属性设置为`PreloadAllModules`令牌。
    这样，内置的*路由器*立刻预加载**所有**使用`loadChildren`的[未受保护](#preload-canload)的特征区域。 
  
  +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.
  
    现在，访问 `http://localhost:3000` 时，`/heroes`路由将在前台加载，同时，*CrisisCenterModule*和其他异步特征模块将在后台被_主动_加载，等待我们导航到它们。
  
  <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.
  
    使用将**PreloadAllModules**模块策略提供给*RouterModule.forRoot*配置对象一样方式，我们可以定义自己的策略。
  
    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).
  
    因为想利用这点，我们将添加自定义策略，_只_预加载我们选择的模块。为了启用预加载，我们使用*Route 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.
  
    我们将自定义`preload`布尔值添加到`crisis-center`路由数据，自定义策略将使用它。然后在自定义策略服务中将`route.path`添加到`preloadedModules`数组。
    我们还将在控制台中为预加载模块输出一条消息。
  
  +makeExcerpt('app/app-routing.module.ts (route data preload)', 'preload-v2')
  
  :marked
  