我有一个巨大的FormGroup,它有很多FormControls和很多嵌套的FormArrays,我需要获取除一些控件之外的顶部FormGroup的值。这些控件可能位于嵌套 FormArray 的深处
是否有任何角度方法来过滤 form_group.value 或 form_group.getRawValue()?
看起来没有内置函数,所以我必须实现一些手动收集值的函数:
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);
}
}