2016-03-29 10 views
0

問題:ユーザーの許可に応じて、別のデフォルトルートを使用する必要があります。許可はように付与されたとする場合は、このページにアクセスする権限がありませんRouteConfig以上が、現在のユーザーのデフォルトルートとしてx1を考えるとAngular2で動的なデフォルトルートを使用するにはどうすればよいですか?

@RouteConfig([ 
    { path: '/x1', name: 'x1', component: X1Component, useAsDefault: true }, 
    { path: '/x2', name: 'x2', component: X2Component}, 
    { path: '/x3', name: 'x3', component: X3Component}, 
    { path: '/x4', name: 'x4', component: X4Component}, 
    { path: '/x5', name: 'x5', component: X5Component} 
]) 

は、x2はデフォルトルートとして使用する必要があります。

とにかく、私たちは既に属性loaderを試してみました。問題は、URLが更新されない(例:/x1からx2)、これはCSSのクラスrouter-link-activeが自動的にメニューのリンクにアタッチされないなどのその他の問題が発生することです。

もちろん、回避策を書くことができますが、このような問題をどのように解決していますか?

答えて

1

実行時にデフォルトルートが変更できるとは思いません。

一般的なアプローチは、ログインが必要なコンポーネントに@CanActivate()デコレータを追加し、ユーザーが実際にログインしていない場合は適切なルートにリダイレクトすることです。

現在のユーザーがログインしているかどうかを知るには、おそらくDIを使用してユーザー状態に関するグローバル情報を取得する必要があります。
また、DIから取得できるルートルータインスタンスへの参照が必要です。 @CanActivate()でDIを使用することは現在のところ直接サポートされていませんが、related Angular2 issueの議論では、グローバルインジェクタへの参照を得るための回避策(Plunkerリンク付き)が提供されています。

も参照してください。Redirect to a different component inside @CanActivate in Angular2

関連する問題