【发布时间】:2021-11-18 04:29:09
【问题描述】:
我希望将某些类/库与 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 {}
没有成功。到目前为止,我的解决方案是使用 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: () => new MyClassDep(), inject: [] },
],
})
export class UsersModule {}
最好的方法是什么?
【问题讨论】:
标签: dependency-injection nestjs