我正在尝试将提供程序注入(inject)到由 new
创建的对象中。是否可以?例如:
@Injectable()
export class SomeService {
}
export class SomeObject {
@Inject()
service: SomeService;
}
let obj = new SomeObject();
它在我的测试中不起作用,obj.service
未定义。
最佳答案
不,依赖注入(inject)系统仅适用于用它创建的对象。
您可以将 SomeObject
创建为 custom provider不过,例如与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 {}
关于javascript - Nestjs:将提供者注入(inject)到由关键字 new 创建的对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164170/