我想知道是否有任何方法返回表单中已更改的字段。我需要使用已更改的字段创建一个字符串列表。
我拥有一个很大的表格,大约有30个字段。
一种方法是在所有字段中滚动,但这会有些痛苦,因为我有保存对象的键,也有保存对象列表的键。
如果有一个函数可以返回在表单上更改的所有字段和对象,那将是很好的选择。
如果可能的话,请在此处编写代码,或者提供有关如何验证表单上更改的字段的提示。
StackBlitz :https://stackblitz.com/edit/angular-khiusf
答案 0 :(得分:0)
以下方法将返回更改的值列表:
getDirtyValuesForForm(formName: any) {
let dirtyValues = {};
Object.keys(formName.controls)
.forEach(key => {
let currentControl = formName.controls[key];
if (currentControl.dirty) {
if (currentControl.controls)
dirtyValues[key] = this.getDirtyValues(currentControl);
else
dirtyValues[key] = currentControl.value;
}
});
return dirtyValues;
}
您可以检查控件是否有脏标志。在这里阅读表格 https://angular.io/api/forms/FormControl
答案 1 :(得分:0)
如果保存初始表单值,则可以进行比较以了解更改的内容。
您可以看到一个有效的示例here。