选择器确定 FormArray 的控件属性是 [FormControl] 还是 [FormGroup]?

jco*_*der 2 angular formarray angular-abstract-control

我继承了一个正在调试的角度代码文件。当我记录需要评估的 FormArray 时,它会记录为两种类型的 FormArray 控件之一:[FormControl] 或 [FormGroup]。

这是我正在记录的函数的一部分:

  someFunction(data: any, useForm: any = false): any {
   const form = useForm || <FormGroup>this.formGroup;

   forEach(data, (value, key) => {
    // Check nested FormArray items that include FormControls (Would likely be from mat-table).
   const formArray = (<FormGroup>form).get(String(key));
   console.log('formArray > ', formArray);

   if (isArray(value) && formArray.hasOwnProperty('controls') && [HELP]) 
Run Code Online (Sandbox Code Playgroud)

在一个用例中,当加载包含表单控件的 mat-table 时,我会在日志中看到以下内容:

在此输入图像描述

在另一个用例中,例如具有多个选项的复选框控件,我得到以下结果:

在此输入图像描述

我需要弄清楚如何过滤最后一行代码,即 IF 语句的 [HELP] 条件,以便它仅匹配 FormArray 的控件属性包含 [FormGroup] 而不是 [FormControl] 的条件

Jou*_*usi 6

操作instanceof员测试类型:

if (... && (<FormArray>formArray).controls[0] instanceof FormGroup) { ... }
Run Code Online (Sandbox Code Playgroud)