私のプロジェクトでは2人のガードがいます。 AuthGuardとPermissionGuardです。 AuthGuardを最初に実行する必要があり、解決した時点で、本当にpermissionGuardが起動しますが、このガードは並行して実行され、permissionGuardはうまく動作しません。この問題のために私が使用したのは、私が許可ガードでAuthGuard CanActivateメソッドを呼び出したことですが、これを行うにはかなり良い方法があると思います。別のガードが解決された後、Angular2がガードされる
9
A
答えて
2
私は数週間前と同じ状況にあったので、これを達成するためにルート定義オブジェクトの属性data
を使用してややハックな解決策を書くことにしました。
アイデアがで次々にMainGuard.canActivate
関数内で警備員の配列を使用してデータ属性を読んであろう(例えばguardsList
を)(MainGuard
それを呼び出すことができます)と(guardsList[i].canActive
を呼び出すことで)それらを実行独自のガードを定義することですループ。所定のガードでcanActivate
に電話するには、Injector
アプリを利用する必要があります。
あなたが購読して完了を待つ必要があるとして、すべて1つのguardsList
配列の下Observable
、Promise
、プレーンboolean
警備員をサポートしたいとき、それは私が実現してきたなど、
を少し複雑になります
const appRoutes: Routes = [
{
...
canActivate: [SequentialGuards],
data: { GUARDS_SEQ: [Guard1, Guard2, Guard3] }
...
}]
関連する問題
- 1. Angular2ガードとルーター
- 2. angular2:ガードをCanDeactivateする
- 3. ため-理解、ガードとRandomAccessFile.readLine
- 4. エリクシールのガード句の理解
- 5. ガード
- 6. Rubocopガード句のジレンマ - 不要なラインが長すぎるガード句
- 7. 角度2のパラメータ化されたルートパスの子ルートで '解決'または 'ガード'をトリガーできません
- 8. コメントブロックの前後にガードが含まれていますか?
- 9. std :: shared_ptr(unique_ptr)でガードされたメモリを変更する方法
- 10. else文のガードはコンパイルされません: '|'入力時の解析エラー
- 11. Angular2:ルーターイベント:ルートガードが解決される前のNavigationCancel
- 12. ガードmallocのは
- 13. ガードの苦情
- 14. ファイアベースのauthガード
- 15. FireProise.all()のネストされた約束がすべて解決された後
- 16. 式が未使用の関数に解決され、未解決の識別子 'ディスパッチ'エラーが使用される
- 17. ジェネリックのTypescript型ガードは強制されません
- 18. typescriptジェネリック型ガード
- 19. symfony3ガードとログインフォーム
- 20. Laravelガードとは?
- 21. 否定ガード
- 22. ガードはラムダ
- 23. Ionic 3コンポーネントのガード
- 24. エリクシルのis_moduleガード句
- 25. Laravelは認証ガードが[]に定義されていないことを言う
- 26. 値がセットdoubleにセットされていない場合、ガードletステートメント
- 27. 複数の条件がガード・ステートメントのスウィフト
- 28. UIルータのネストされた解決が解決しない
- 29. これが解決されている
- 30. Angular2:複数のコンポーネントに同じガードを付ける方法
たぶん、[この回答](http://stackoverflow.com/a/40590812/6942210)があなたを助けることができます。これは、あなたがこのような何かを行うことができますどのようAngular Library「ハック」。私は彼に同じ問題があると思う。 –
ありがとう、あなたが言及した質問の答えは私がしたのと同じですが、私が言ったように、よりよい方法がおそらく存在すると思います。 –
@hosseinahmadi。これで助けが必要ですか? – AngularChef