问题描述
我有一个包含多个部分的 Angular 动态表单。该部分可以是 formGroup
和 formArray
。每个部分还可以有一个 formGroup
和一个 formArray
。我想实现未保存的表单更改的回滚。为此,我有一组来自上次保存的值,这些值是从 NGRX
存储中获取的。当更改回滚时,我使用 patchValue 用数据填充表单。但是,如果在编辑表单期间从 formArray
中删除了字段,则 patchValue
将仅填充可用字段的数据。如何在不使用所有字段的手动迭代的情况下使用正确数量的 formArray
恢复表单的配置?
解决方法
这是解决方案之一:
创建一个函数,用 formArray 初始化 formGroup,formGroup 字段基于上次保存时从 ngrx 存储中获取的值。
所有更改都将在表单组中完成 - 可以添加、删除或编辑部分。
现在,如果需要回滚更改,只需再次调用该函数即可。这将使用上次保存的 ngrx 存储中的值重新初始化表单,因此将删除编辑的更改。
如果更改已保存,则在 ngrx 存储中进行更改