我正在尝试为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 {}

09-25 18:39