APP_INITIALIZER
ルートモジュールプロバイダでは、バックエンドでいくつかの依存関係をブートストラップし、最初のコンポーネントをロードするを設定できることがわかっています。
{
provide: APP_INITIALIZER,
useFactory: configLoader,
multi: true,
deps: [ConfigService]
}
上記の方法でアプリを起動する前にユーザー設定を読み込みますが、アプリを起動する前に Websocket を接続するなど、さらに何かを行いたいです。
私が書いた関数では、最初に構成をロードし、次に configLoader 関数で websocket を接続することができることはわかっていますconfigLoader
が、何らかの理由で、今はそれができないため、次のようにして実行する必要があります。
{
provide: APP_INITIALIZER,
useFactory: [configLoader, websocketLoader],
multi: true,
deps: [ConfigService, WebsocketService]
}
しかし残念ながら、それは機能しません。複数のアプリ初期化子を読み込む方法はあるのでしょうか?
ベストアンサー1
useFactory
配列ではないはずです
{
provide: APP_INITIALIZER,
useFactory: websocketLoader,
multi: true,
deps: [ConfigService, WebsocketService]
},
{
provide: APP_INITIALIZER,
useFactory: configLoader,
multi: true,
deps: [ConfigService, WebsocketService]
}
multi: true
同じキー ( ) を持つ複数のプロバイダーを提供すると、APP_INITIALIZER
以前のプロバイダー ( の動作) はオーバーライドされませんmulti: false
が、DI はそれらを配列自体に収集します。