此处的示例:https://stackblitz.com/edit/angular-kzxq2a
我有多个具有相同控件名称的FormGroup
实例。当用户选择一个选项时,它会通过更改UI绑定到的FormGroup
从一组数据切换到另一组数据。因此,在模板中,它是<form [formGroup]="form">
,但是在代码中,我将this.form重新分配为另一个FormGroup
。尽管似乎我以前从未看到过这样做,但这似乎已经很好地完成了几个月。
我们最近遇到了一个问题,即在切换表单时,启用/禁用状态似乎未应用于DOM。因此,如果我们使用.disable()
禁用了一些控件,然后从一种形式切换为另一种形式(仍处于启用状态),则页面上的HTML DOM元素将保持禁用状态。数据已正确更新。我们已经看到了一些不可预测的行为。有时启用了某些功能,有时只是下拉菜单不起作用。但是,如果我们将禁用操作推迟到其他事件循环遍历(使用setTimeout
),则通常可以使用。因此,我认为这可能与换出表单并需要在启用/禁用控件之前让Angular完成传递有关。但是,我本来希望每个控件的启用/禁用状态首先存在于每个FormGroup
中,所以仅换出表格就足够了吗?数据确实是这种情况。
我建立了一个简单的示例,所以您可以了解我的意思。加载它,按复选框以关闭“活动”,然后看到文本输入和下拉菜单变为“禁用”。按“切换表单”以转到其他表单,请注意,尽管表单中的数据正确更改,但禁用状态不会更改,并保持原样。如果您使用“带超时切换表单”,您会发现它正常工作。
任何人都可以阐明这一点吗?谢谢。