app.module.ts内调用服务方法提供其他服务

Call service method to provide other services within app.module.ts

我有一个配置服务,它提供了一个名为 getConfiguration(): Observable <Configuration> 的方法。

为了填充我的外部库,我想在app.module.ts中提供这个方法(我想填充库中预期的InjectionToken)。

现在我想知道如何 can/should 在提供程序块中调用此逻辑。

@NgModule({
  declarations: [AppComponent],
  imports: [
      //...
  ],
  providers: [
    {
        provide: MY_CONFIG,
        useValue: ConfigurationService.getConfiguration(), // <--- won't work!
    }
  ]
  bootstrap: [AppComponent],
})
export class AppModule {}

你能帮我吗?

如果您的库期望令牌是 Observable <Configuration>,那么您可以使用工厂来提供 Observable 值,如下所示:

有关使用工厂提供程序的更多详细信息:https://angular.io/guide/dependency-injection-providers#using-factory-providers


    function configFactory(configService: ConfigurationService) {
        return configService.getConfiguration();
    }

    ...
    providers: [
        {
            provide: MY_CONFIG,
            useFactory: configFactory,
            deps: [ConfigurationService]
        }
    ]
    ...