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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据条件配置Angular 5中的app-routing.module来加载两个子路由模块中的一个或另一个?相关的知识,希望对你有一定的参考价值。

我有以下应用程序:

├── 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只是基本的,因为这是应用程序的开始

APP-routing.module.ts

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

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

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

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

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

提前致谢

答案

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

以上是关于如何根据条件配置Angular 5中的app-routing.module来加载两个子路由模块中的一个或另一个?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 Kendo Grid Angular 4 中的条件为一列分配 2 个字段

如何根据Kendo Grid Angular 4中的条件为一列分配2个字段

如何在模态窗口 [ANGULAR 5] 内创建路由?

Angular 2隐藏条件[重复]

如何根据Angular中一个组件中的click事件更改其他组件中的数据?

如何根据使用角度 7 中的键的条件检查来过滤 json 响应中的数组