表单的角度触摸/更改状态

时间:2019-10-11 13:48:58

标签: angular typescript angular-reactive-forms

保存表单的值并在适当的位置分配新的ID后,我需要将表单设置为touched: false dirty: false

该表单具有多层结构,并且具有近似的下一个结构:

FormGroup
-- FormControl
-- FormControl
-- FormArray
  -- FormGroup
...

由于表单的形状不稳定,我递归运行保存。

从FormArray中保存一个FormGroup之后,我分别制作了group.markAsUntouched({ onlySelf: !hasChildren })group.markAsPristine({ onlySelf: !hasChildren })

但是,在那之后,我得到了“原始的”“不变的” FormGroups的“变化的”“脏的” FormArray。

我也尝试过使.parent保持不变并保持不变,但这导致“已更改”“脏” FormGroup(父级)中的“未更改”“原始” FormArray。

我永远不知道自己有多深,以及是否可以将父级标记为未触及原始状态,因为我只保存那些“脏”和“已更改”的FormGroup。另外,在卡关闭之前,我还要检查根FormGroup是否已更改并且变脏,因此保持真实值至关重要。

在文档中,据说markAsUntouchedmarkAsPristine重新计算了AbstractControl的父级的相应值,但这没有发生。

2 个答案:

答案 0 :(得分:-1)

您可以在重置方法中指定当前值 https://angular.io/api/forms/FormGroup#reset

答案 1 :(得分:-1)

通过调用reset方法来重置表单。

form.reset();