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

时间:2018-08-29 14:31:09

标签: angular typescript angular-providers

我使用的是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装饰器的提供程序中。怎么做?

2 个答案:

答案 0 :(得分:1)

使用useClass代替useValue注入对象实例,

  

创建并返回指定类的新实例


代码

// ...
{ provides: pluginToken, useClass: YourConfigurationObjectClass },
//...

答案 1 :(得分:1)

  

我的问题是valueString是来自其他某个提供程序的值

您可以使用useExisting

将一个提供程序的值转发给另一个提供程序
@NgModule({
    providers: [
        {provide: LOCALE_ID, useValue: 'en'},
        {provide: pluginToken, useExisting: LOCALE_ID},
    ],
})
export class MyModule {}

在上面的示例中,'en'被分配给pluginToken,因为它使用了LOCALE_ID的现有值