保存表单的值并在适当的位置分配新的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是否已更改并且变脏,因此保持真实值至关重要。
在文档中,据说markAsUntouched
和markAsPristine
重新计算了AbstractControl的父级的相应值,但这没有发生。
答案 0 :(得分:-1)
您可以在重置方法中指定当前值 https://angular.io/api/forms/FormGroup#reset
答案 1 :(得分:-1)
通过调用reset方法来重置表单。
form.reset();