【发布时间】:2020-02-09 01:32:23
【问题描述】:
在我保存表单的值并在适当的位置分配新的 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 父级的相应值,但它没有发生。
【问题讨论】:
标签: angular typescript angular-reactive-forms