我有一个通过super()实例化的类。在super()中,我想根据某些条件发送参数。但是如果我把if语句放在super()之前,typescript会给出编译错误,说super()必须是第一个语句。有没有办法实现基于条件的超类加载?
这是不起作用的代码。基于某些条件,我想在超级()中传递/阻塞依赖参数(ENGINE_MODEL)。你知道怎么做到这一点吗?
代码:
export class CreateChrStructureNodeControlComponent extends StructureNodeControl {
constructor(private changeRequestCreateService: CreateChangeRequestService) {
if(some condition = 'SF') //my logic
super(changeRequestCreateService,
PLANT,
ENGINE_MODEL);
else
super(changeRequestCreateService,
PLANT)
;
}
}
超类:
export class StructureNodeControl extends BaseTypeaheadControl<TypeahaedLookupTableItem> {
constructor(changeRequestCreateService: CreateChangeRequestService, ...dependencies: string[]) {
super(STRUCTURE_NODE,
changeRequestCreateService.getStructureNodes,
TypeahaedLookupTableItem,
...dependencies);
}
发布于 2020-12-15 00:41:18
只需将超级参数从varargs字符串数组更改为常规的旧字符串数组,然后您就可以有条件地向该数组添加依赖项,并过滤掉禁用的依赖项。
例如,将超类更改为:
export class StructureNodeControl extends BaseTypeaheadControl<TypeahaedLookupTableItem> {
constructor(changeRequestCreateService: CreateChangeRequestService, dependencies: string[]) {
super(STRUCTURE_NODE,
changeRequestCreateService.getStructureNodes,
TypeahaedLookupTableItem,
...dependencies);
}
然后在你的子类中:
export class CreateChrStructureNodeControlComponent extends StructureNodeControl {
constructor(private changeRequestCreateService: CreateChangeRequestService) {
super(changeRequestCreateService,
[
PLANT,
some_logic === 'SF' ? ENGINE_MODEL : null
].filter(Boolean) // get rid of the nulls
);
}
https://stackoverflow.com/questions/65298356
复制