【问题标题】:Selector to determine if FormArray's controls property is a [FormControl] or [FormGroup]?选择器确定 FormArray 的控件属性是 [FormControl] 还是 [FormGroup]?
【发布时间】:2021-11-09 04:40:05
【问题描述】:

我继承了我正在调试的 Angular 代码文件。当我记录需要评估的 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]) 

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

在另一个用例中,例如带有多个选项的复选框控件,我得到这个:

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

【问题讨论】:

    标签: angular formarray angular-abstract-control


    【解决方案1】:

    instanceof 运算符测试类型:

    if (... && (<FormArray>formArray).controls[0] instanceof FormGroup) { ... }
    

    【讨论】:

    • 谢谢!这正是我想要的。
    猜你喜欢
    • 2017-06-09
    • 2021-04-27
    • 1970-01-01
    • 2020-02-26
    • 2018-07-10
    • 2021-10-10
    • 2019-09-02
    • 1970-01-01
    • 2011-07-31
    相关资源
    最近更新 更多