在@NgModule中,如何根据用户类型?
打开不同的组件我有一个NgModule,有两个不同的页面,我想根据用户类型打开不同的页面
@NgModule({
imports: [ SharedModule ,RouterModule.forChild([
{ path: 'edit', component: EditComponent },
{ path: 'view', component: ViewComponent }
])],
declarations: [
EditComponent, ViewComponent
],
})
export default class MainModule {
constructor(private u:UserService){
//------
//------
}
}
环境是:RC5
答案 0 :(得分:0)
注入路由器并致电navigate(...)
@NgModule({
imports: [ SharedModule ,RouterModule.forChild([
{ path: 'edit', component: EditComponent },
{ path: 'view', component: ViewComponent },
])],
declarations: [
EditComponent, ViewComponent
],
})
export default class MainModule {
constructor(private u:UserService, router:Router, ){
if(u.type=='manager') {
router.navigate(['/edit']);
} else {
router.navigate(['/view']);
}
}
}
答案 1 :(得分:0)
这样的事情:
if (this.user.userType === UserType.x1) {
this.router.navigate(['/edit']); }
else if (this.user.userType === UserType.x2) {
this.router.navigate(['/view']);
}
答案 2 :(得分:0)
经过测试: 在延迟加载模式下, 在ngModule中写入此代码会导致无限循环
constructor(private router:Router){
console.log("MainModule 39");
this.router.navigateByUrl("/tabs-demo/tab3");
}
不处于延迟加载模式时 在ngModule中写入该代码可能会导致
Unhandled Promise rejection: Bootstrap at least one component before injecting Router
答案是: 在第一个组件中写入导航代码。
在RC5中进行测试
感谢。