如何过滤 FormGroup 值?
How to filter FormGroup values?
我有一个巨大的 FormGroup,它有许多 FormControl 和许多嵌套的 FormArray,我需要获取除某些控件之外的顶级 FormGroup 的值。这些控件可能位于嵌套的 FormArrays
的很深处
是否有任何angular方法来过滤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;
}
if (item instanceof FormArray) {
return item.controls.map(form_group => {
return this.getFormValue(form_group as FormGroup);
});
}
}
我有一个巨大的 FormGroup,它有许多 FormControl 和许多嵌套的 FormArray,我需要获取除某些控件之外的顶级 FormGroup 的值。这些控件可能位于嵌套的 FormArrays
的很深处是否有任何angular方法来过滤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;
}
if (item instanceof FormArray) {
return item.controls.map(form_group => {
return this.getFormValue(form_group as FormGroup);
});
}
}