如何过滤FormGroup值?

问题描述 投票:0回答:1

我有一个巨大的FormGroup,它有很多FormControls和很多嵌套的FormArrays,我需要获取除一些控件之外的顶部FormGroup的值。这些控件可能位于嵌套 FormArray 的深处

是否有任何角度方法来过滤 form_group.value 或 form_group.getRawValue()?

angular angular-forms
1个回答
1
投票

看起来没有内置函数,所以我必须实现一些手动收集值的函数:

getFormValue(form_group: FormGroup): any {
  const value = {};

  Object.keys(form_group.controls).forEach(control_name => {
    if (/* condition that shows that the value should not be filtered out */) {
      value[control_name] = this.getFormItemValue(form_group.controls[control_name]);
    }
  });

  return value;
}

getFormItemValue(item: AbstractControl): any {
  if (item instanceof FormControl) {
    return item.value;
  } else if (item instanceof FormArray) {
    return item.controls.map(form_group => {
      return this.getFormValue(form_group as FormGroup);
    });
  } else if (item instanceof FormGroup) {
    return this.getFormValue(item as FormGroup);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.