この記事では、Angular の依存関係注入モードについて詳しく説明します。一定の参考値があるので、困っている友達が参考になれば幸いです。
依存性注入: 依存性注入は DI
と呼ばれます。開発中、オブジェクトのインスタンス化に遭遇することがよくありますが、複数のオブジェクト間に依存関係がある場合、手動でのインスタンス化は特に面倒です。 。
オブジェクト A がオブジェクト B に依存する場合、オブジェクト A はオブジェクト B を明示的にインスタンス化する必要はありません。B は外部メカニズムによって挿入されます。オブジェクト A は B オブジェクトを宣言するだけで済みます。これは依存関係注入によって解決される問題です。
依存性注入とともによく登場するもう 1 つの概念は、制御の反転と呼ばれます。
制御の反転: IOC と呼ばれる制御の反転は、コードの内部からコードの外部への依存制御の反転を指します。
Dependency Injection と Inversion of Control は、1 つのアイデアを表す同じコインの表裏の関係にあります。 Dependency Injection は手段の説明、つまり制御反転を実現する方法に焦点を当てます。Control Inversion は目的の記述に焦点を当てます。つまり、目的は依存関係の制御を元に戻すことです。コードの内部からコードの外部へ。
関連チュートリアルの推奨事項: "angular チュートリアル "
各コンポーネントにはインジェクター インスタンスがあり、コンポーネントが必要とするオブジェクトを注入する役割を果たします。インジェクターは、Angular によって提供されるサービス クラスです。通常の状況では、インジェクター メソッドを直接呼び出す必要はなく、インジェクターは、コンポーネントの constructor(constructor) を通じて、コンポーネントに必要なオブジェクトをコンポーネントに自動的に挿入します。プロバイダーは、インジェクターにインスタンスの作成方法を指示します。
インジェクターが、挿入されたオブジェクトがどのようにインスタンス化されるかを知るためには、プロバイダーを指定する必要があります。通常、プロバイダー属性を渡します。コンポーネントまたはモジュール。提供する必要があるオブジェクトを宣言します。
providers:[{provide:AService, useClass: AServivce}] <=> providers:[AService] provide 属性:指定了提供器的令牌(token) useClass 属性:表示实例化方式是 new
使用 useFactory 方式实例化对象 providers:[ { provide:AService, useFactory: (bService: BService) => { .... }, deps:[BService] //deps声明工厂方法所依赖的服务。 ] 工厂方法创建的对象是单例对象
コンストラクタ(constructor)で宣言されたオブジェクト、トークンプロバイダ内の はクラス名に基づいて照合され、指定されたオブジェクトは useClass 属性の値に基づいてインスタンス化されます。
プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !
以上がAngular の依存性注入パターンの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。