【发布时间】:2017-04-17 10:44:25
【问题描述】:
我正在创建一个 angular2-meteor 应用程序。
export const routes: Route[] = [{
path: '',
redirectTo: "login",
pathMatch: "full"
},
{
path: 'login',
component: LoginComponent
},
{
path: 'csvtemplate',
component: TemplateComponent,
canActivate: ['canActivateForLoggedIn'],
children: [{
path: '',
redirectTo: 'dashboard' <----how to add condition for multiple path
},
{
path:'dashboard',
component: DashboardComponent
},
{
path: 'csvtimeline/:month/:year',
component: CsvTimelineComponent
}, {
path: 'csvjson',
component: CsvJsonComponent
}]
}];
当我使用 LoginComponent 登录我的应用程序时,它将转到具有三个子组件的 TemplateComponent
- 仪表板
- csv 时间线
- csvjson
现在我默认将 redirectTo 设置为我的仪表板组件。但代替此重定向,我想根据登录用户配置文件重定向到 csvjson 组件或 csvtimeline 组件。
假设
如果登录用户是“管理员”,他应该重定向到 -> 仪表板组件
如果登录用户是“访客”,那么他应该被重定向到 -> csvjson 组件
我知道我们可以在仪表板组件的 ngOnInit() 中执行此操作以进行重定向。
if (this.user && this.user.profile.role == 'Guest') {
this._router.navigate(['csvtemplate/csvjson']);
}
但我正在寻找更好的选择,所以我不必每次都打开仪表板组件,它会直接转到 csvjson 组件。
【问题讨论】:
-
可以使用警卫吗?
-
为什么不直接在你的 LoginComponent 上进行重定向?
标签: angular angular2-routing angular2-meteor