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