Angular 2动态更改默认路由

时间:2017-02-17 14:17:11

标签: javascript angular angular2-routing

我需要允许我的应用程序的用户在需要时更改默认路由:我有一个参数页面,他们可以在登录时选择他们想要首先显示的“页面”。

例如,现在,当他们登录时,他们会重定向到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

感谢您的帮助!

1 个答案:

答案 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;
    }
  }
}

因此,当具有覆盖页面的用户存在时,您可以切换到新网址,或者使用默认流程。