我的根模块路由是这样的:
RouterModule.forRoot([
{ path: '', redirectTo: 'management-portal', pathMatch: 'full' },
{ path: 'management-portal', loadChildren: './xxx/management-portal.module#ManagementPortalModule', canActivate: [AuthGuard] },
{ path: 'login', component: LoginComponent },
{ path: '**', component: NotFoundComponent }
], {
enableTracing: true
})
它按预期工作,我可以在登录后路由到ManagementPortalModule。让我们来看看我的懒惰的ManagementPortalModule。
有一个名为路由器插座。
<router-outlet name='sub'></router-outlet>
我在ManagementPortalModule中的路线。
RouterModule.forChild([
{
path: '', component: ManagementPortalComponent,
children: [
{ path: '', component: Test1Component, outlet: 'sub' },
{ path: 'test2', component: Test2Component, outlet: 'sub' }
]
}
])
它可以在开头的'sub'出口加载Test1Component。我想点击链接
时路由到Test2Component<a [routerLink]="[{ outlets: { sub: ['test2'] } }]"></a>
生成的Url
当我点击时没有发生任何事情。然后我尝试了/管理门户/(子:TEST2)
<a [routerLink]="['',{ outlets: { sub: ['test2'] } }]">
地址
/管理门户(子:TEST2)
根据this,我认为网址格式正确,点击后出现错误
无法匹配任何路线。网址细分:'test2'
请帮助,非常感谢!
答案 0 :(得分:7)
尝试使用命名出口路由的非空顶级路径。
在ManagementPortalModule中路由。
RouterModule.forChild([
{
path: 'load', component: ManagementPortalComponent,
children: [
{ path: '', component: Test1Component, outlet: 'sub' },
{ path: 'test2', component: Test2Component, outlet: 'sub' }
]
}
])
有关详细信息,请参阅:Angular 4 Lazy loading with named router-outlet not working