如何动态更改ngrx表单中的表单ID?

问题描述 投票:1回答:1

此问题与ngrx表单有关

如何动态更改ngrx表单中的表单ID?

我有一个表格数据列表。表格中的每一行都包含不同产品的详细信息。 (每行您可以看到具有不同属性的不同产品)。

每一行都是新产品

因此,这些行中的每行都有一个编辑选项。因此,当单击它时,将弹出并填充产品随附的相应表单控件(来自表行)。用户可以在此处编辑该特定产品的详细信息。并保存。

当用户在保存表单后关闭(此表单是侧面板)并打开另一个产品时,先前产品表单中的值将保留在当前打开的表单中。

我感觉这是因为formIds相同。因此,为了防止这种情况,我认为唯一的方法是在用户单击每个编辑按钮时动态分配新的formId。

有什么办法吗?

[如果不可能的话,我认为是将子表单动态添加到父表单中。但这会导致每次用户单击编辑产品时,父表单树就会增加。

但是如果我们喜欢那样,如果我们想为那些新创建的子表单中的某些子属性添加动态控件,该怎么办?

...类似将FormGroupState(child)嵌套在另一个FormGroupState(parent)中,然后将其子级转换为父级子窗体。

我知道这有点复杂。但是有办法吗?

angular rxjs ngrx angular-forms
1个回答
0
投票

这里是[[ngrx-forms的作者。

我看到几个选择:

1)只要关闭/打开侧面板,就重置/重新创建表单。这是最简单的解决方案,因为它允许您仅使用单一表单状态而无需任何ID声明。为此,您可以为closeSidebarAction的表单化简添加处理程序(如果您已经有类似的操作)或创建一个新的操作。在该操作的缩减程序中,只需使用formState: createFormGroup('MY_FORM_ID', initialValue)即可完全重置表单状态。

2)让

ngrx-forms

通过创建一个包含所有产品表单的大表单数组来管理所有表单。这样,每个产品都会有自己的形式状态。我不喜欢这种设计,因为从概念上讲,没有这样的父表单,但是每个产品表单都应该是独立的。3)自己为每个产品创建和管理一种表单状态。然后,您可以使用productId或类似内容作为表单ID的一部分。这样,即使用户切换到其他产品并开始对其进行编辑,您也可以保留单个产品的表单状态。

总之,我相信选项1是您想要的。我希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.