複数の Angular アプリ初期化子 質問する

複数の Angular アプリ初期化子 質問する

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 はそれらを配列自体に収集します。

おすすめ記事