У меня есть абстрактный провайдер (это несколько подклассов этого провайдера, расширяющего его), который использует 2 сервиса, и я хочу передать эти сервисы в подклассы этого абстрактного класса, желательно без необходимости указывать их каждый раз, когда я делаюэкземпляр подкласса.
Я попробовал следующее:
export abstract class TransactionConstructor {
protected constructor(private readonly conversionService: ConversionService,
private readonly formatService: FormatService) {
}
}
@Injectable()
export class TransactionConstructorBTC extends TransactionConstructor {
protected constructor(conversionService: ConversionService,
formatservice: FormatService) {
super(conversionService, formatService);
}
public create() {
return new TransactionConstructorBTC();
}
}
@Injectable()
export class TransactionConstructorETH extends TransactionConstructor {
protected constructor(conversionService: ConversionService,
formatservice: FormatService) {
super(conversionService, formatService);
}
public create() {
return new TransactionConstructorETH();
}
}
Итак, контроллер получает запрос @Get (), а затем в зависимости от информации, содержащейся в этом запросе, Я хочу сделать TransactionConstructorBTC или TransactionConstructorETH (или другие позже).
Но я не хочу каждый раз вводить convertService и formatService в конструктор, я хочу, чтобы эти подклассы получали теуслуги из родительского абстрактного класса.
Я хочу быть в состоянии сделать это:
transactionConstructor: TransactionConstructor;
transactionConstructor = new TransactionConstructorBTC();
Но это "старый путь".Как добиться этого "nestjs"?Мол, абстрактный экземпляр TransactionConstructor не может быть создан, но я хочу, чтобы Контроллер владел этим абстрактным свойством и установил для него требуемый подкласс.