如何处理Angular html中子类型数组的迭代?

问题描述

我有一系列类似于FormControl的项目-但每个项目都是FormControl的子类型,每个项目都扩展了不同的使用方法。当我使用* ngFor遍历array: FormControl[]并在其中调用方法时,如下所示:

<ng-container *ngIf="formControl.type == 1">
    <button (click)="formControl.someFunction()">Type 1 function</button>
</ng-container>

我收到一个类型错误,指出someFunction()在FormControl上不存在。没错,这对我来说很有意义,但是我将如何正确处理Angular中的这种情况?

我已经尝试创建一个使用FormControl并返回其子类型的管道,该管道有时可以工作,但是在动作表达式中失败(错误:动作表达式中不能有管道)。

有什么方法可以在HTML中进行投射?还是我应该输入formControls数组的另一种方法?我尝试了(ChildType1 | ChildType2 | ChildType3 | FormControl,但是那也不起作用。

谢谢!

解决方法

我要做的是访问.ts文件中的子函数。

<button (click)="someFunction()">Type 1 function</button> 

在.ts文件中

someFunction() {
  parent.childfunction()
}