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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在另一个提供者中注入提供者,相同的模块#1250相关的知识,希望对你有一定的参考价值。

我有一个服务/提供商,让我们说它叫ServiceA1,在一个标记为@Injectable()的模块中。在同一个模块中我有另一个服务/提供者,让我们说它叫ServiceA2,标记为@Injectable()

我想在ServiceA1注入ServiceA2我尝试:

此代码抛出错误:serviceA1 undefined

我的module.ts

我是否必须制作另一个模块才能在serviceA2中使用serviceA1

答案

如果您是由班级直接注入服务,则不需要@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},
]

这也适用于同一模块。

以上是关于在另一个提供者中注入提供者,相同的模块#1250的主要内容,如果未能解决你的问题,请参考以下文章

NestJS:如何从同一个模块将服务注入提供者?

在另一个模块中为 EC2 添加指定子网 - AWS Terraform -

2.3了解AngularJS模块和依赖注入

如何使用 terraform 在多个区域进行设置?

NestJS:依赖注入和提供者注册

gateway网关使用