2016-12-08 21 views
1

私はアンギュラ2についていくつかの不明瞭さを持っています。。角度2ルータガイド遅延モジュール

CanDeactivateGuardは、AppRoutingModule(loadChildren: 'app/crisis-center/crisis-center.module#CrisisCenterModule')によって遅延ロードされるCrisisCenterModuleの一部であるCrisisCenterRoutingModuleで使用されます。

主な質問: なぜ、AppRoutingModuleプロバイダでCanDeactivateGuardを宣言する必要がありますか?なぜCrisisCenterRoutingModuleプロバイダにはないのですか?

ガイドの答えは、ルータがナビゲーション処理中に注入できるように、GuardをメインのAppRoutingModuleプロバイダに追加する必要もあります。

答えて

0

実際、CanDeactivateGuardはAppRoutingModuleではなくCrisisCenterRoutingModuleでも提供されているようです。 ここで問題は、ガイドがCanDeactivateGuardを提供するものとしてAppRoutingModuleを指摘した理由です。 私が推測する答えは、CanDeactivateGuardはどのモジュールにとっても有用なサービスであり、遅延ロードされたモジュールには独自のルートインジェクタがあるため、CanDeactivateGuardの追加インスタンスが作成されることを意味します。 CanDeactivateGuardには状態がありませんので、複数のインスタンスを持つことは無用ですので、AppRoutingModuleに配置する方がよいでしょう。

関連する問題