如何使用给定的注入令牌将依赖项注入提供者?
How to inject a dependency into a provider with given injection token?
我正在使用 Angular 插件,需要使用插件导出的 InjectionToken
提供配置对象来配置它。
import { pluginToken } from 'plugin';
@NgModule({
providers: {
// Configure the plugin
//
// The configuration value string needs to be taken from some other
// provider (available for dependency injection).
{ provides: pluginToken, useValue: valueString },
},
})
class MyModule {
...
}
我遇到的问题是 valueString
是来自其他提供商的值。我不知道如何将依赖项注入 @NgModule
装饰器的提供者。怎么做到的?
而不是useValue
,使用useClass
which
注入对象实例
creates and returns new instance of the specified class
代码:
// ...
{ provides: pluginToken, useClass: YourConfigurationObjectClass },
//...
The problem I have is that valueString is a value from some other provider
您可以使用 useExisting
将一个提供者的值转发给另一个提供者
@NgModule({
providers: [
{provide: LOCALE_ID, useValue: 'en'},
{provide: pluginToken, useExisting: LOCALE_ID},
],
})
export class MyModule {}
在上面的示例中,'en'
将被分配给 pluginToken
,因为它使用 LOCALE_ID
的现有值
我正在使用 Angular 插件,需要使用插件导出的 InjectionToken
提供配置对象来配置它。
import { pluginToken } from 'plugin';
@NgModule({
providers: {
// Configure the plugin
//
// The configuration value string needs to be taken from some other
// provider (available for dependency injection).
{ provides: pluginToken, useValue: valueString },
},
})
class MyModule {
...
}
我遇到的问题是 valueString
是来自其他提供商的值。我不知道如何将依赖项注入 @NgModule
装饰器的提供者。怎么做到的?
而不是useValue
,使用useClass
which
creates and returns new instance of the specified class
代码:
// ...
{ provides: pluginToken, useClass: YourConfigurationObjectClass },
//...
The problem I have is that valueString is a value from some other provider
您可以使用 useExisting
@NgModule({
providers: [
{provide: LOCALE_ID, useValue: 'en'},
{provide: pluginToken, useExisting: LOCALE_ID},
],
})
export class MyModule {}
在上面的示例中,'en'
将被分配给 pluginToken
,因为它使用 LOCALE_ID