Angular 5延迟加载的模块路径彼此重叠

时间:2018-04-04 11:17:20

标签: angular angular-router angular-router-guards

我有一个带有两个延迟加载模块的应用程序。

主要模块:

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。

1 个答案:

答案 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},