我需要允许我的应用程序的用户在需要时更改默认路由:我有一个参数页面,他们可以在登录时选择他们想要首先显示的“页面”。
例如,现在,当他们登录时,他们会重定向到Day,但是他们希望能够更改它并在他们登录时按周或重定向。
{ path: 'planification', component: PlanificationComponent,
children: [
{ path: '', redirectTo: 'Day', pathMatch: 'full' },
{ path: 'day', component: DayComponent },
{ path: 'week', component: WeekComponent },
{ path: 'month', component: MonthComponent }]
}
我该怎么做?
@ angular / core:2.4.7
@ angular / router:3.4.7
感谢您的帮助!
答案 0 :(得分:9)
实际上,您可以使用警卫在导航发生之前重定向到正确的URL:
{ path: '', canActivate: [UserSettingsGuard], redirectTo: 'Day', pathMatch: 'full' }
你的后卫可能看起来像这样:
@Injectable()
export class UserSettingsGuard implements CanActivate {
constructor(private router: Router) { }
canActivate() : boolean {
var user = ...;
if(user.defaultPage) {
this.router.navigate([user.defaultPage]);
} else {
return true;
}
}
}
因此,当具有覆盖页面的用户存在时,您可以切换到新网址,或者使用默认流程。