angular 6 FormGroup / FormControl迭代器问题

时间:2018-07-01 16:35:19

标签: angular angular6 angular-reactive-forms angular-forms

我内部有一个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();
});

但是不幸的是,其他表单控件从未启用

知道为什么吗?

谢谢 友情

2 个答案:

答案 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()
        });
      }
 });