使用Angular反应形式将已更改的字段保存在列表中

时间:2019-01-18 07:28:08

标签: angular typescript angular-reactive-forms

我想知道是否有任何方法返回表单中已更改的字段。我需要使用已更改的字段创建一个字符串列表。

我拥有一个很大的表格,大约有30个字段。

一种方法是在所有字段中滚动,但这会有些痛苦,因为我有保存对象的键,也有保存对象列表的键。

如果有一个函数可以返回在表单上更改的所有字段和对象,那将是很好的选择。

在Angular中使用反应式表单执行此操作的正确方法是什么?

如果可能的话,请在此处编写代码,或者提供有关如何验证表单上更改的字段的提示。

StackBlitz https://stackblitz.com/edit/angular-khiusf

2 个答案:

答案 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