2017-02-17 9 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

実際にはナビゲーションが発生する前に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; 
    } 
    } 
} 

だから、ときに新しいURLに切り替えることができますオーバーライドされたページを持つユーザーが存在するか、代わりにデフォルトのフローを使用します。

+0

このソリューションを角度2.4で使用することができませんでした。パスとコンポーネントを指定する必要がありました。 –

+1

'children:[]'を追加するとうまくいくはずなので、コンポーネントを指定する必要はありません。 – Compeek

+0

私は、ユーザーがルートのセット(ビューのタブとして表示される)へのルートを許可され、その最初のルートがデフォルトでルーティングされるケースがあります。これを行う方法? – karthikaruna

関連する問題