angular 6 FormGroup/FormControl 迭代器问题

angular 6 FormGroup/FormControl iterator issue

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

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

知道为什么吗?

谢谢 你

这个示例对我有用:stackblitz

您应该 post 为我们提供更多代码详细信息,以便我们遇到您的问题。

您应该排除在其自身值更改 subscription 内修改 name 表单控件。因为这将进行递归调用并给出

maximum call stack size exceeded

错误。而且你不应该再次启用 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()
        });
      }
 });