angular - 角度触摸/更改表单的状态
问题描述
touched: false
dirty: false
在我保存它的值并在适当的位置分配新的 ID 之后,我需要制作我的表单。
该形式具有多级结构,并具有近似的下一个结构:
FormGroup
-- FormControl
-- FormControl
-- FormArray
-- FormGroup
...
由于表格形状不稳定,我递归地运行我的保存。
FormGroup
从 FormArray 中保存一个后,我制作group.markAsUntouched({ onlySelf: !hasChildren })
和group.markAsPristine({ onlySelf: !hasChildren })
.
但是,在那之后,我得到了“原始”“未更改”FormGroups 的“更改”“脏”FormArray。
我也尝试过.parent
保持不变和保持不变,但这导致“已更改”“脏”FormGroup(父级)中的“未更改”“原始”FormArray。
我永远不知道我有多深,以及是否可以将父级标记为未触及和原始,因为我只保存那些“脏”和“已更改”的 FormGroup。此外,我还会在卡片关闭之前检查根 FormGroup 是否已更改和变脏,因此保持真实值至关重要。
在文档中,据说markAsUntouched
并markAsPristine
重新计算 AbstractControl 父级的相应值,但它没有发生。
解决方案
您可以在重置方法中指定当前值 https://angular.io/api/forms/FormGroup#reset
推荐阅读
- java - Spring 注释控制器工作,但路由器/处理程序方法似乎没有从 *ServerRequest* 检索 *Mono<>*
- r - 显示每列的唯一值
- apache-spark - 您将如何限制 Spark 中每个分组键要处理的记录数?(对于倾斜的数据)
- flutter - FutureBuilder 使 UI 冻结
- python-3.x - 功能很慢,替代 np.where 的格式对用户/读者不友好
- git - 长时间停顿后恢复功能开发
- mysql - 当第一个案例出现时,Sql 两个 multique 唯一忽略
- julia - 如何从文本中提取数据的特定部分(块)
- scalamock - 如何模拟一个接受参数并验证它的类?
- c# - 如何在shutdown()之后再次调用scheduler.Start()?(quartz.net 3.0.2 和 C#)