我迷失了我的理解,如何将异步模块加载到最新的angular-webpack-starter(RC4 with @ angular / router 3.0.0-beta.2)中运行。
有一个例子,但是获得更多解释,做什么以及如何一起玩将会有所帮助。
我做了什么: - 我导出了我的惰性组件路径:
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时无法读取未定义的属性“路径”。这样做的正确方法是什么?
我还想知道,如果异步加载的组件名称对于整个应用程序必须是唯一的吗?
答案 0 :(得分: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));
})
})
];