我正在尝试开发一个应用程序,其中根模块将显示将加载惰性模块的路由器链接的列表:
const appRoutes: Routes = [
{
path: 'compose',
component: ComposeMessageComponent,
outlet: 'popup'
},
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [AuthGuard]
},
{
path: 'crisis-center',
loadChildren: 'app/crisis-center/crisis-center.module#CrisisCenterModule',
data: { preload: true }
}
];
在这种特殊情况下,管理模块将具有两个路由器链接,用于其自身声明的组件,以及一个路由器链接,用于另一个模块(管理英雄):
const adminRoutes: Routes = [
{
path: '',
component: AdminComponent,
canActivate: [AuthGuard],
children: [
{
path: '',
canActivateChild: [AuthGuard],
children: [
{ path: 'crises', component: ManageCrisesComponent },
{path: 'heroes', component: ManageHeroesComponent},
{ path: '', component: AdminDashboardComponent }
]
}
]
}
];
我可以导航到所有路径,但是如果去找英雄并尝试导航到它自己的路线之一(例如零),则找不到页面。英雄路线如下所示:
const manageHeroesRoutes: Routes = [
{
path: '',
component: ManageHeroesComponent,
children: [
{ path: 'zeroes', component: ManageZerosComponent },
{ path: 'friends', component: ManageFriendsComponent }
]
}
];
我注意到,如果我将管理员路由中的heroes路径替换为:
children: [
{ path: 'crises', component: ManageCrisesComponent },
{path: 'heroes', loadChildren: 'app/admin/manage-heroes/manage-heroes.module#ManageHeroesModule'},
{ path: '', component: AdminDashboardComponent }
]
我可以进入英雄路线了。但是我想了解为什么不延迟加载ManageHeroes模块就不能访问它们。
这是到我的问题的复制到stackblitz的链接https://stackblitz.com/edit/angular-pm9wsz
谢谢。
在路由路径中使用组件时,您将定义一个组件来处理此路由。Angular将仅加载该组件。在这种情况下,该组件位于其他模块中,但是角度不会加载其他任何模块iten,包括其路径。
当在路径路径定义中使用“加载子项”时,角度将延迟加载模块和itens,包括其内部路径。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句