javascript - Nestjs:将提供者注入到由关键字 new 创建的对象中
问题描述
我正在尝试将提供程序注入到由new
. 可能吗?例如:
@Injectable()
export class SomeService {
}
export class SomeObject {
@Inject()
service: SomeService;
}
let obj = new SomeObject();
它在我的测试中不起作用,obj.service
未定义。
解决方案
不,依赖注入系统仅适用于使用它创建的对象。不过,您可以创建SomeObject
为自定义提供程序,例如useClass
:
@Injectable()
class SomeObject {
constructor(private someService: SomeService) {}
}
@Module({
providers: [
SomeService,
{ provide: SomeObject, useClass: SomeObject },
],
})
export class ApplicationModule {}
或useFactory
用于自定义设置逻辑:
const someObjectFactory = {
provide: 'SomeObject',
useFactory: (someService: SomeService) => {
// custom setup logic
return new SomeObject(someService);
},
inject: [SomeService],
};
@Module({
providers: [SomeService, connectionFactory],
})
export class ApplicationModule {}
推荐阅读
- protractor - 如何解决 cucumberjs 中的模棱两可的问题?
- jsf - HighFaces 支持最新的 Highcharts 版本
- asp.net-mvc - 如何在控制器的asp.net mvc视图中将文本分配到textarea(任何多行文本)?
- wpf - 在 Xaml 设计器中禁用“代码执行”会导致重新启用工具栏消失
- php - Laravel遇到非数值如何解决?
- python - 如何最大化 from-rest group by 的单机 Dask 性能?
- android - 检查矩形是否相交或在另一个(Android)的一侧
- oracle-apex - Apex:无法创建新应用程序
- python - 使用 Pandas 如何使用列数据对大数据进行统计分析
- excel - 具有滚动日期的 Excel 工作簿的 Read_Excel