typescript 如何在nestjs中手动注入依赖项

esbemjvw  于 2023-02-17  发布在  TypeScript
关注(0)|答案(2)|浏览(164)

在angular中,我们可以使用内置的Injector类手动访问和注入依赖项。通过它,你可以访问Injectables并注入它们,而不需要在构造函数中实际传递它们。基本上,我想将一个服务注入到另一个服务中,而不需要将其作为参数传递给构造函数。
这是等效Angular Inject a service manually
我想在nestjs中实现类似的功能
注意:要注入的服务还有一个依赖项,所以我不能只示例化它

w46czmvw

w46czmvw1#

我相信您正在寻找的是Nest的ModuleRef类,在该类中可以执行以下操作:

@Injectable()
export class CatsService implements OnModuleInit {
  private service: Service;
  constructor(private moduleRef: ModuleRef) {}

  onModuleInit() {
    this.service = this.moduleRef.get(Service);
  }
}

其中Service实际上应该是您想要注入的类。

gz5pxeao

gz5pxeao2#

我认为@Inject('token ')应该如您预期的那样工作

import { Injectable, Inject } from '@nestjs/common';

@Injectable()
export class HttpService<T> {
  @Inject('HTTP_OPTIONS')
  private readonly httpClient: T;
}

参考:www.example.comhttps://docs.nestjs.com/providers#property-based-injection

相关问题