如何使用给定的注入令牌将依赖项注入提供者?

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

的现有值