如何在nestjs中手动注入依赖

Mik*_* O. 7 node.js typescript nestjs

在 Angular 中,我们可以使用内置Injector类手动访问和注入依赖项。通过它,您可以访问 Injectables 并注入它们,而无需实际将它们传递到构造函数中。基本上我想将一个服务注入另一个服务,而不将其作为参数传递给构造函数。

这是角度等效手动注入服务

我想在nestjs中实现类似的事情

注意:要注入的服务也有依赖项,所以我不能只是实例化它

Jay*_*iel 8

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

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

  onModuleInit() {
    this.service = this.moduleRef.get(Service);
  }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 只是需要注意的是,如果您想解析当前模块以外的依赖项,则还需要传递 { strict: false } 作为第二个参数。 (2认同)