【问题标题】:Angular: routing to different modules on page loadAngular:在页面加载时路由到不同的模块
【发布时间】:2018-11-29 04:23:38
【问题描述】:

我最近开始研究 Angular(Angular 5),路由非常新,但很弱。我的应用程序有 3 个名为 Home, School, Office 的选项卡,我有两种类型的用户 Adminnon-admin。点击Office 标签后,管理员将被重定向到管理员页面,非管理员用户将被重定向到非管理员页面。

所以,为了这个要求,我做了这样的路由:

app.module.ts

@NgModule({
  imports: [
    BrowserModule,
    AdminModule,
    NonAdminModule
  ],
  declarations: [AppComnonent],
  bootstrap: [AppComponent]
})
export class AppModule { }

app.component.ts

ngOnInit(){
 this.userIsAdmin = true;
}

app.component.html

<div *ngIf='!userIsAdmin '>
<non-admin-page></non-admin-page>
</div>
<div *ngIf='userIsAdmin '>
<admin-page></admin-page>
</div>

non-admin.module.ts

@NgModule({
      imports: [

      ],
      declarations: [NonAdminComnonent],
      exports: [NonAdminComnonent]
    })
    export class NonAdminPageModule { }

admin.module.ts

@NgModule({
      imports: [

      ],
      declarations: [AdminComnonent],
      exports: [AdminComponent]
    })
    export class AdminPageModule { }

管理页面.html

<div>I am ADMIN</div>

非管理员页面.html

<div>I am not an ADMIN</div>

我必须在页面加载时路由到不同的模块,我的路由是否正确?请指导我。

【问题讨论】:

标签: angular angular5 angular-router


【解决方案1】:

我会使用延迟加载:How to Route to Feature Module

如果不试试这个:https://stackblitz.com/edit/angular-hd7ayj

您的代码将是学校,而不是迪士尼。

查看我的个人资料以查看实际应用。

希望这会有所帮助。编码愉快。

【讨论】:

    【解决方案2】:

    在您的情况下,您只是根据同一组件中的条件显示 adminnon-admin html。 如果你想使用路由来区分,你可以使用下面的过程,

    1. 创建一个标志来区分用户(正如您已经完成的那样)
    2. 根据此条件创建选项卡。有两个用于办公室的选项卡项目 - 一个路由到 admin,另一个路由到 non-admin,并根据标志仅显示其中一个。

    这样您可以区分管理员和非管理员的组件。

    【讨论】:

    • 这将是一个需求变更,我无法更改需求。我只能有 1 个标签,只能使用它
    • 在这种情况下,您可以使用解析路由。当您尝试路由到办公室选项卡时,您可以处理条件并基于此您可以继续路由(到管理组件)或重定向到不同的路由(非管理组件)。您可以在此处找到相同的示例:concretepage.com/angular-2/angular-resolve-guard-example
    猜你喜欢
    • 2017-11-21
    • 2019-07-26
    • 2018-04-20
    • 2023-01-19
    • 2019-01-05
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多