【发布时间】:2018-07-02 03:04:46
【问题描述】:
我有一个 fromGroup 和 7 个 FormControl 内部(姓名、地址、邮政编码等) 当页面初始化时,只有第一个 FormControl 被启用,其他的被禁用。只有在用户输入他的名字后,其他的 FormControls 才应该被启用。我想遍历所有表单控件并在循环中启用每个控件,而无需键入所有表单控件。 我想做这样的事情:
for (const field in this.form.controls) {
this.form.get(field).enable();
}
或类似:
Object.keys( this.form.controls).forEach(key => {
this.form.controls[key].enable();
});
但不幸的是,其他表单控件从未启用
知道为什么吗?
谢谢 呸呸呸
【问题讨论】:
-
您是否在初始化期间禁用了它们?它在工作吗?你如何调用一种方法来启用它们?提供更多详细信息以帮助您更好地提供服务。
-
是的,其他表单控件在初始化期间被禁用,这部分工作。编辑名称formcontrol时,有一个订阅者监听名称formcontrol:
codethis.insuredAddressForm.get('name').valueChanges .subscribe(inserted => { if(inserted.length > 0){ //在这里我想启用所有的表单控件 } }code -
我没有看到您的代码有任何问题。你能在stackblitz.com中重现这个问题吗?
-
我看到的唯一问题是,您订阅了
insuredAddressForm表单控件,并且您正在尝试修改form命名表单控件this.form.controls[key].enable(); -
你本可以更好地解释你的错误。否则它将导致像这样不必要的解决方法。无论如何,我已经做了一个答案,为您在下面的 cmets 中提到的另一个答案中提到的错误提供解决方案。
标签: angular angular6 angular-reactive-forms angular-forms