我有一个带有两个延迟加载模块的应用程序。
主要模块:
const appRoutes = RouterModule.forRoot([
{path: '', redirectTo: '/welcome', pathMatch: 'full'},
{
path: 'guest',
loadChildren: 'app/guest-module/guest.module#GuestModule',
},
{
path: '',
loadChildren: 'app/user-module/user.module#UserModule',
},
{path: '**', component: NopageComponent},
],
);
子模块1(GuestModule):
const viewRoutes = RouterModule.forChild([
{path: 'overview/:reportId', component: HistoryOverviewComponent, canActivate: [GuestAuthGuard]},
]);
子模块2(UserModule):
const viewRoutes = RouterModule.forChild([
{path: 'overview/:reportId', component: HistoryOverviewComponent, canActivate: [UserAuthGuard]},
]);
当我路由到/ guest / overview / 1时,它总是会触及UserAuthGuard。儿童路线相互叠加是否正常?
有没有办法通过配置区分它们而不是更改名称?
我使用角度为5.2.9且角度为1.7.3。
答案 0 :(得分:0)
我认为您的问题在
{
path: '',
loadChildren: 'app/user-module/user.module#UserModule',
},
您必须为该路径提供名称或添加pathMatch:' full'为避免重定向到用户路径,我建议:
{
path: 'guest',
loadChildren: 'app/guest-module/guest.module#GuestModule',
},
{
path: 'user',
loadChildren: 'app/user-module/user.module#UserModule',
},
{path: '**', component: NopageComponent},
或:
{
path: 'guest',
loadChildren: 'app/guest-module/guest.module#GuestModule',
},
{
path: '',
loadChildren: 'app/user-module/user.module#UserModule',
pathMatch: 'full'
},
{path: '**', component: NopageComponent},