問題:ユーザーの許可に応じて、別のデフォルトルートを使用する必要があります。
@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}
])
与えられたx1
上記のデフォルトルートとしてRouteConfig
しかし、現在のユーザーがこのページにアクセスする権限を持っていない、x2
許可が付与されたというようにする場合は、デフォルトルートとして使用する必要があります。
とにかく、私たちはloader
すでに属性を試しました。問題は、URLが更新されないことです(例:from/x1
からx2
)。これにより、cssクラスがrouter-link-active
メニューのリンクに自動的にアタッチされないなどの他の問題が発生します。
もちろん、回避策を書くこともできますが、この種の問題をどのように解決していますか?
どのルートがデフォルトルートであるかを実行時に変更することはできないと思います。
一般的なアプローチは@CanActivate()
、ログインが必要なコンポーネントにデコレータを追加し、ユーザーが実際にログインしていない場合は、適切なルートにリダイレクトすることだと思います。
現在のユーザーがログインしているかどうかを知るには、DIを使用してユーザーの状態に関するグローバル情報を取得することをお勧めします。
DIから取得できるルートルーターインスタンスへの参照も必要です。でのDIの使用@CanActivate()
は現在直接サポートされていませんが、関連するAngular2の問題での説明は、グローバルインジェクターへの参照を取得するための回避策(プランカーリンクを使用)を提供します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加