在另一个提供者中注入一个提供者,同一模块#1250

时间:2018-10-31 16:50:46

标签: javascript node.js typescript dependency-injection nestjs

我在标记为ServiceA1的模块A中有一个服务/提供者,称为@Injectable()。 在相同的模块中,我还有另一个服务/提供者,我们称它为ServiceA2,标记为@Injectable()

我想在尝试的ServiceA1中注入ServiceA2my service

此代码引发错误:serviceA1 undefined

我的module.ts

module.ts

是否需要制作另一个模块才能在serviceA2中使用serviceA1

1 个答案:

答案 0 :(得分:1)

如果您要直接由类注入服务,则不需要@Inject()

@Injectable()
export class ServiceA2 {
  constructor(private serviceA1: ServiceA1) {
  }

这与:

@Injectable()
export class ServiceA2 {
  constructor(@Inject(ServiceA1) private serviceA1: ServiceA1) {
  }

请注意,您注入了@Inject('ServiceA1')而不是@Inject(ServiceA1)。这是通过字符串令牌而不是类进行匹配的,因此无法解决。

如果要通过字符串令牌注入类,则需要像下面这样在模块中声明提供程序:

providers: [
    ServiceA2,
    {provide: 'ServiceA1', useClass: ServiceA1},
]

这在同一模块中也适用。