如何根据条件配置Angular 5中的app-routing.module来加载两个子路由模块中的一个或另一个?

时间:2018-03-04 19:33:42

标签: angular routing

我有以下申请:

├── app.component.html
├── app.component.ts
├── app.module.ts
├── app-routing.module.ts
├── modules
│   ├── home
│   │   ├── components
│   │   ├── home.module.ts
│   │   └── home-routing.module.ts
│   └── user
│       ├── components
│       ├── services
│       │   └── auth-guard.service.ts
│       ├── user.module.ts
│       └── user-routing.module.ts
└── shared
    ├── components
    │   └── navbar
    │       ├── navbar.component.html
    │       ├── navbar.component.scss
    │       └── navbar.component.ts
    ├── services
    │   └── auth.service.ts
    └── shared.module.ts

app-routing.module只是基本的,因为这是应用程序的开始

应用-routing.module.ts

const routes: Routes = [
    { path: '**', redirectTo: "''", pathMatch: 'full' },
    { path: '' /*...*/ }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

我的问题是我如何配置应用程序,以便app-routing.module中的路由''指向home-routing.module中的路由''基于auth.service中定义的条件,以及user-routing.module中定义的路由''?家庭和用户各自拥有各自的子路线。

我的问题背后的逻辑是,我希望有两个单独的模块,一个用于用户可以在未经过身份验证时访问的部分,另一个用于经过身份验证的用户。一旦用户通过身份验证,我希望默认路由指向相关模块及其路由模块,具体取决于auth.service中定义的身份验证逻辑。

我意识到我可以使用canActivate来保护用户模块,但是我找不到任何显示我如何完成这种条件路由逻辑的资源。

提前致谢

1 个答案:

答案 0 :(得分:0)

没有办法。您应该使用canActivate并根据身份验证状态重定向到不同的路由。