我内部有一个fromGroup和7个FormControl(名称,地址,邮政编码等) 页面初始化后,仅第一个FormControl被启用,其他的则被禁用。仅在用户输入其名称之后,其他FormControl才应启用。我想遍历所有formcontrol并启用循环中的每个,而无需键入所有formcontrol。 我想做这样的事情:
for (const field in this.form.controls) {
this.form.get(field).enable();
}
或类似的话:
Object.keys( this.form.controls).forEach(key => {
this.form.controls[key].enable();
});
但是不幸的是,其他表单控件从未启用
知道为什么吗?
谢谢 友情
答案 0 :(得分:1)
此示例对我有用:stackblitz
您应该为我们发布更多代码详细信息,以解决您的问题。
答案 1 :(得分:1)
您应该排除在自己的值更改name
中修改subscription
表单控件。因为这将进行递归调用并给出
超出了最大调用堆栈大小
错误。同样,您不应该再次启用name
控制,因为它已经是enabled
。
this.form.get('name').valueChanges.subscribe(inserted => {
if (inserted.length > 0) {
Object.keys(this.form.controls)
.forEach(key => {
if(key !== 'name')
this.form.controls[key].enable()
});
}
});