ほとんどの人は、プロバイダを宣言するだけでプロバイダを設定する基本的な方法に精通している可能性が最も高いですが、
providers:
Angular dependency injectionは、より高度な機能を提供します。ファクトリプロバイダを使用すると、特定の関数を呼び出して値を返すようにInjector
を設定できます。 この例を見てみましょう。
providers: };
provideプロパティは、依存性注入で使用されるトークンを構成し、useFactoryは目的の値を返すために使用される関数を指しています。 Depsプロパティは、ファクトリ関数に渡されるトークンを構成します。
ときにそれを使用するには?実行時まで持たない情報に基づいて、依存する値を動的に作成する必要がある場合、ファクトリプロバイダは非常に便利です。 他のサービスとアプリケーションの状態に基づいて、どの値を返すかを情報に基づいて決定できます。
の例:
ユーザーがログインしているモバイルデバイスを推測してみましょう。 ブラウザのユーザーエージェント、画面の幅、画面の高さなどの情報を使用しようとします。 後でデバイス名を識別するために使用される3つのトークンを定義しましょう。P>
InjectionToken
InjectionToken
T
Injector
でパラメータ化されています。 これにより、追加のレベルの型安全性が提供されます。
providers: providers: providers:
これで、上で定義した三つのトークンに基づいてデバイス名を検出するアルゴリズムを考え出すことができます。 これらの依存関係を解決するために、3つの依存関係を持つusefactoryに矢印関数を渡し、リストされたトークンを使用して依存関係配列(dep)を渡します。最後に、Angularコンポーネントでデバイス名を使用します。
@Component({ selector: 'my-device-name')
export class DeviceName {
constructor(@Inject('DeviceName') private deviceName: string) {}}
インジェクトパラメータデコレータは、このパラメータ(deviceName)が定義されたトークン—DeviceNameから解決されるべきであることをAngular DIに示します。
それだけです!
Twitterで私に従ってください#LanoTechno