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]
}
]
...
我有一个配置服务,它提供了一个名为 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]
}
]
...