私は角度依存性注入について簡単に質問します。私は、サービスがアプリケーション全体で単一のインスタンスしか持たないようにするために、サービスを使用するコンポーネントではなくAppModuleのプロバイダとしてプロバイダに含める必要があることを読んでいます。これにより、AppModuleによってインポートされた他のモジュールが適用されますか。たとえば、AuthServiceをSharedModuleのプロバイダとして使用したいとします。このモジュールをAppModuleにインポートすると、アプリケーションのすべてのコンポーネントが同じサービスインスタンスを共有できますか?角度依存性注入
角度依存性注入
答えて
短い答え:はい
けど...
は、共有モジュールでアプリ全体のシングルトンプロバイダを指定しないでください。その共有モジュールをインポートする遅延ロードモジュールは、サービスの独自のコピーを作成します。
出典:https://angular.io/guide/ngmodule#why-userservice-isnt-shared
SharedModuleが複数回インポートされる可能性があるため、AuthModuleのインスタンスが複数存在することがあります。 CoreModuleの場合と同じように、一度だけインポートされます。右? – user455289
@ user455289 yes exacltyですが、これらのモジュールが遅延ロードされている場合のみです。もしそうでなければ、それは動作しますが、推奨されません。角度のある文書では推奨されないものがある場合は、将来のリリースで変更する可能性があるため、考慮する必要があります。 – echonax
ああ、ありがとう。 – user455289
いいえ、あなたはシングルトンパターンを強制するNgModuleインポート/エクスポートを使用することはできません。 echonaxの答えで指摘されているように、遅延ロードモジュールはすべてのサービスを再びブートストラップします。
これで、コンストラクタを使用して、モジュールの重複インポートをブロックすることができます。これにより、開発者はモジュールのロード順序を管理し、遅延モジュールがモジュールを直接インポートすることを防ぐことができます。モジュールがセカンダリモジュールによってインポートされた場合、この問題を回避することができます。
あなたのNgModuleクラスのコンストラクタ
@NgModule({
providers: [
MySingletonService
]
})
export class ExampleModule {
public constructor(@Optional() @SkipSelf() parentModule: ExampleModule) {
if (parentModule) {
throw new Error('ExampleModule is already loaded');
}
}
}
それはそれで一つだけのサービスを持っているモジュールを作成するのが最善ですで、このようにブロックし、他の何かのためにそれらを使用することはできません。これにより、依存関係の種類をもっと簡単に管理できます。
- 1. 角度依存性注入
- 2. 角度依存性注入性能
- 3. 円の依存性注入角度2
- 4. Angular $ injectorと角度依存性注入
- 5. 角度依存性注入エラー
- 6. 角度1.5コンポーネント依存性注入
- 7. 角度1.5&ES6 - 依存性注入
- 8. 依存性注入の実装角度
- 9. カスタムバリデーター角度依存性注入
- 10. 角度1.5コンポーネント依存性注入
- 11. 依存性注入問題 - 角度2
- 12. 角2依存性注入
- 13. イオン/角度2依存性の注入は、私はから依存性注入パターン以下てるパターン
- 14. 角度2を注入依存コンストラクタ
- 15. デコレータの角2依存性注入
- 16. 角2 - 依存性注入とバレルリング
- 17. 依存性注入角2 - イオン2&タイスクリプト
- 18. 角度1タイプのスクリプトプロジェクトの依存性注入
- 19. 角度2 - デコレータファクトリへの依存性を注入する
- 20. @Input()に基づく角度2の動的依存性注入
- 21. 高度な依存性の注入
- 22. 依存性注入
- 23. 依存性注入
- 24. 依存性注入
- 25. Zend Framework依存性注入対Symfony2依存性注入
- 26. 依存性注入を使用した依存性注入器の注入
- 27. Groovyの依存性注入
- 28. ASP.NETモジュール依存性注入
- 29. ASP.NETコア依存性注入
- 30. コンストラクターの依存性注入
タイトルに質問を記入してください。 –
私は本当に方法を知らなかった。 – user455289
はい、ルートインジェクタに遅延ロードされたプロバイダを除いたすべてのモジュール –