2017-02-17 65 views
5

我需要让我的应用程序的用户改变时,他们想的默认路由:我有一个参数页面,在这里他们可以选择“页面”,他们希望在登录到第一个显示。角2动态改变默认的路由

对于为例,现在,他们重定向到一天,当他们登录,但他们希望能够改变这一点,是重定向每周或每月登录时,如果他们想要的。

{ path: 'planification', component: PlanificationComponent, 
    children: [ 
    { path: '', redirectTo: 'Day', pathMatch: 'full' }, 
    { path: 'day', component: DayComponent }, 
    { path: 'week', component: WeekComponent }, 
    { path: 'month', component: MonthComponent }] 
} 

我该怎么做?

@角/核心:2.4.7

@角/路由器:3.4.7

感谢您的帮助!

回答

5

其实你可以使用这个警卫重定向到正确的网址导航发生前:

{ path: '', canActivate: [UserSettingsGuard], redirectTo: 'Day', pathMatch: 'full' } 

你Guard可以是这样的:

@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; 
    } 
    } 
} 

所以,你可以切换到新的URL时,带有覆盖页面的用户存在或使用默认流程。

+0

无法获得该解决方案具有角2.4工作。我必须指定路径和组件。 –

+1

如果添加'children:[]',它应该可以工作,并且不必指定组件。 – Compeek

+0

我有其中用户将被允许路由到一组路由的(将被显示为在视图选项卡)和第一它们应该被路由到,默认情况下的情况。这个怎么做? – karthikaruna