2016-12-23 11 views
9

私のプロジェクトでは2人のガードがいます。 AuthGuardとPermissionGuardです。 AuthGuardを最初に実行する必要があり、解決した時点で、本当にpermissionGuardが起動しますが、このガードは並行して実行され、permissionGuardはうまく動作しません。この問題のために私が使用したのは、私が許可ガードでAuthGuard CanActivateメソッドを呼び出したことですが、これを行うにはかなり良い方法があると思います。別のガードが解決された後、Angular2がガードされる

+0

たぶん、[この回答](http://stackoverflow.com/a/40590812/6942210)があなたを助けることができます。これは、あなたがこのような何かを行うことができますどのようAngular Library「ハック」。私は彼に同じ問題があると思う。 –

+0

ありがとう、あなたが言及した質問の答えは私がしたのと同じですが、私が言ったように、よりよい方法がおそらく存在すると思います。 –

+0

@hosseinahmadi。これで助けが必要ですか? – AngularChef

答えて

2

私は数週間前と同じ状況にあったので、これを達成するためにルート定義オブジェクトの属性dataを使用してややハックな解決策を書くことにしました。

アイデアがで次々にMainGuard.canActivate関数内で警備員の配列を使用してデータ属性を読んであろう(例えばguardsListを)(MainGuardそれを呼び出すことができます)と(guardsList[i].canActiveを呼び出すことで)それらを実行独自のガードを定義することですループ。所定のガードでcanActivateに電話するには、Injectorアプリを利用する必要があります。

あなたが購読して完了を待つ必要があるとして、すべて1つのguardsList配列の下ObservablePromise、プレーンboolean警備員をサポートしたいとき、それは私が実現してきたなど、

を少し複雑になります

const appRoutes: Routes = [ 
{ 
    ... 
    canActivate: [SequentialGuards], 
    data: { GUARDS_SEQ: [Guard1, Guard2, Guard3] } 
    ... 
}] 
関連する問題