angular - 角度 6 FormGroup/FormControl 迭代器问题
问题描述
我有一个 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();
});
但不幸的是,其他表单控件从未启用
知道为什么吗?
谢谢你
解决方案
您应该排除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()
});
}
});
推荐阅读
- javascript - 在函数内部使用闭包进行计数
- java - Java的Collection类方法的实现在哪里
- dependency-injection - “尝试创建控制器时发生错误”无故随机发生
- jenkins-pipeline - Jenkins 声明式管道锁定当前 JenkinsAgent (env.NODE_NAME)
- api - VSCode 扩展 API - 检索未定义的工作区设置值
- android - 如何通过 Android Studio 查看我的手机?
- docker - 更改数据根时如何修复 Docker 错误
- php - 菜鸟尝试 php: undefined index
- flutter - 将图像从颤振发送到 Django 休息框架
- css - Azure 部署时未找到 Vue CSS 依赖项错误