首页 文章

从Angular2中的其他模块延迟加载子项

提问于
浏览
0

我遇到了一个问题,其中子路由在应用程序根级别呈现 .

我的应用程序使用根应用程序模块构建,该模块可导入SecureModule和PublicModule . 然后,SecureModule导入ProviderModule和PracticeModule . 每个模块使用.forChild定义它自己的路由(除了定义forRoot的AppModule之外) . 出于某种原因,在根应用程序模块级别出现的每个模块中的所有默认路径(以“作为路径”列出的路径) .

这是一个说明根树的Augury图:
Augury Root Tree

SecureComponent是一个功能组件(没有选择器),它定义了安全区域的布局,并拥有自己的路由器插座 . 正如您从根树中看到的那样,Practice和Provider模块路径完美地位于其下 . 但是,Practice和Provider模块也直接来自AppComponent .

我懒得通过loadChildren加载子路径并在我的默认路径上使用pathMatch,所以我不确定他们为什么要附加到根组件 .

我的安全模块路由定义如下:

export const secureRoutes = [
{
    path: 'secure', component: SecureComponent, children: [
        { path: '', redirectTo: 'firstuse', pathMatch: 'full' },
        { path: 'firstuse', component: FirstUseComponent },
        { path: 'practice', loadChildren: './+practice#PracticeModule' },
        { path: 'provider', loadChildren: './+provider#ProviderModule' }
    ]
},

] .

我的练习路线定义为:

export const practiceModuleRoutes = [
{ path: '', redirectTo: 'dashboard', pathMatch: 'full' },
{ path: 'dashboard', component: PracticeDashboardComponent },
{ path: ':id', component: PracticeViewerComponent }
];

我的应用路线定义为:

export const appModuleRoutes: Routes = [
{ path: '', redirectTo: 'public', pathMatch: 'full' },
{ path: 'public', component: PublicComponent },
{ path: 'id_token', redirectTo: 'secure' },
{ path: 'logoff', component: LogoffComponent },
{ path: 'Unauthorized', component: UnauthorizedComponent },
{ path: '**',    component: NoContentComponent },
];

有没有人想过为什么这些练习和提供者默认路由在根应用程序组件中呈现?

1 回答

  • 0

    我刚刚意识到我的AppModule正在导入Secure和Public模块 . 当它这样做时,似乎在根级别包含了这些模块的路由 . 当loadChildren发生时,它还为这些路由加载了正确的路径,这就是它们存在于两个地方的原因 .

    为了解决我的问题,我从AppModule中删除了SecureModule和PublicModule的导入 . 这为仅仅作为子项加载路径扫清了道路 .

相关问题