我正在尝试为new
创建的对象注入提供程序。可能吗?例如:
@Injectable()
export class SomeService {
}
export class SomeObject {
@Inject()
service: SomeService;
}
let obj = new SomeObject();
在我的测试中不起作用,
obj.service
是未定义的。 最佳答案
不可以,依赖项注入系统仅适用于使用它创建的对象。
不过,您可以将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 {}