我有两个UseCases命名,FirstUseCase
和SecondUseCase
FirstUseCases
export class FirstUsecases {
constructor(
private readonly something: Something
) {}
async execute(): Promise<any> {
console.log("This is FirstUsecases class.");
}
}
SecondUseCases
export class SecondUsecases {
constructor(
// How to inject FirstUsecases here?
private readonly firstUseCases: FirstUsecases ) {}
async execute(): Promise<any> {
this.firstUseCases.execute();
}
}
我想把FirstUsecases
注入SecondUsecases
类。
注意:FirstUsecases
和SecondUsecases
位于同一个模块MyProxyModule
MyProxyModule
static register(): DynamicModule {
return {
module: MyProxyModule,
providers: [
{
inject: [FirstRepository],
provide: "FIRST_USECASE",
useFactory: (firstRepository: FirstRepository) => new FirstUsecases(firstRepository),
},
{
inject: [SecondRepository],
provide: "SECOND_USECASE",
useFactory: (secondRepository: SecondRepository) => new SecondUsecases(secondRepository),
},,
]
}
}
如何将FirstUsecases
注入SecondUsecases
?
如果您像那样使用new
,则您负责传递类所需的依赖项。要获得FirstUsecases
的实例,您可以将其注入令牌添加到inject
数组中,就像添加SecondRepository
并将其传递给构造函数一样。
static register(): DynamicModule {
return {
module: MyProxyModule,
providers: [
{
inject: [FirstRepository],
provide: "FIRST_USECASE",
useFactory: (firstRepository: FirstRepository) => new FirstUsecases(firstRepository),
},
{
inject: [SecondRepository "FIRST_USECASE"],
provide: "SECOND_USECASE",
useFactory: (secondRepository: SecondRepository, firstUsecase: FirstUsercase) => new SecondUsecases(secondRepository, firstUsecase),
},,
]
}
}