小编ble*_*dev的帖子

NestJs:在没有 @Injectable() 的情况下注入类

我想将某些类/库与 NestJs 分离。这些类被声明为没有@Injectable装饰器的常规类,并且可能具有进一步的依赖项。

将它们注入我的 Nest 应用程序的最佳方式是什么?有没有办法可以在导入后将它们装饰为可注入?我尝试过类似的事情:

import { MyClass } from '@my-library/my-class';
import { MyClassDep } from '@my-library/my-class';

function makeInjectable<T>(target: Type<T>): Type<T> {
  Injectable()(target);
  return target;
}

@Module({
  controllers: [],
  providers: [
    makeInjectable(myClass),
    makeInjectable(myClassDep),
  ],
})
export class UsersModule {}
Run Code Online (Sandbox Code Playgroud)

没有成功。到目前为止,我的解决方案是使用 useFactory 手动提供这些,但这并不理想:

import { MyClass } from '@my-library/my-class';
import { MyClassDep } from '@my-library/my-class';

@Module({
  controllers: [],
  providers: [
    { provide: MyClass, useFactory: (myClassDep: MyClassDep) => new MyClass(myDep), inject: [MyClassDep] },
    { provide: MyClassDep, useFactory: () => …
Run Code Online (Sandbox Code Playgroud)

dependency-injection nestjs

8
推荐指数
1
解决办法
4271
查看次数

标签 统计

dependency-injection ×1

nestjs ×1