0

我对如何使异步模块加载在最新的 angular-webpack-starter(带有@angular/router 3.0.0-beta.2 的 RC4)中运行感到迷茫。

包含一个示例,但获得更多解释、做什么以及如何协同工作会很有帮助。

我做了什么: - 我导出了我的惰性组件路由:

export const referenzRoutes: RouterConfig = [
  { path: '', component: Test3 },
  { path: 'testApp', component: TestApp },
]

然后我在我的父组件路由中导入并使用了子路由:

import {referenzRoutes} from "./+Referenz/referenz.routes";
export const routes: RouterConfig = [
  {...},
  {path: 'referenz', component: 'Referenz', canActivate: [ WebpackAsyncRoute ], 
  children: referenzRoutes},
]

我为每个组件定义了这样的异步路由:

export const asyncRoutes: AsyncRoutes = {
  'Referenz': require('es6-promise-loader!./+Referenz/referenz.component'),
  'TestApp': require('es6-promise-loader!./+Referenz/testApp/testApp.component'),
  'Test3': require('es6-promise-loader!./+Referenz/test3/test3.component'),
};

我从 browser_adapter.js 收到错误:84 导航到 TestApp 时无法读取未定义的属性“路径”。这样做的正确方法是什么?

我还想知道,异步加载的组件名称是否必须对整个应用程序是唯一的?

4

1 回答 1

0

请参阅以下博客文章 AsyncRoute with Webpack

实现下面的代码

[
  new AsyncRoute({
      path: '/'
      , name: RouterService.CONTROL_CENTER_ROUTE
      , loader: () => new Promise((resolve: any) => {
          (<any>require).ensure(['control-center.component']
          , (require: any) =>
            resolve(require('control-center.component').ControlCenterComponent));
      })
      , useAsDefault: true
    })
  , new AsyncRoute({
    path: '/login'
    , name: RouterService.LOGIN_ROUTE
    , loader: () => new Promise((resolve: any) => {
        (<any>require).ensure(['login.component']
        , (require: any) =>
          resolve(require('login.component').LoginComponent));
    })
  })
];
于 2016-08-19T20:22:08.720 回答