angular - 动态创建 formGroup 时 control.setParent 不是函数
问题描述
我正在使用 Angular5,并且我有一个字段列表,每个字段都有一个名称和 FormControl。我尝试使用此代码将控件动态添加到组中,但出现错误。
const formControlFields = [
{name: 'field1',control: [null, []] as FormControl},
{name: 'field2',control: [null, []] as FormControl}
];
const formGroup: FormGroup = new FormGroup({});
formControlFields.forEach( f => formGroup.addControl(f.name,f.control));
this.form = new FormGroup({groups:formGroup});
这是我得到的错误:
错误类型错误:control.setParent 不是函数
at FormGroup.registerControl (forms.js:4352) at FormGroup.addControl (forms.js:4372) at eval (trade-search.component.ts:142)
解决方案
而是使用new FormControl()
语法,它将起作用:
ngOnInit() {
const formControlFields = [
{ name: 'field1', control: new FormControl(null, []) },
{ name: 'field2', control: new FormControl(null, []) }
];
const formGroup: FormGroup = new FormGroup({});
formControlFields.forEach(f => formGroup.addControl(f.name, f.control));
this.form = new FormGroup({ groups: formGroup });
console.log(this.form);
}
演示:https ://stackblitz.com/edit/angular-9vbsgf?file=src%2Fapp%2Fapp.component.ts
推荐阅读
- spring-boot - 微服务中的事务发件箱模式与 ChainedKafkaTransactionManager
- controller - 在 Business Central 的启动 (standalone.bat) 中不断收到 KieServer-ControllerConnect 错误 401
- firebase - Flutter - 来自 Firebase 的英雄小部件子图像 url
- c++ - 正确使用 RDRAND(片上生成器)作为 std::random_device 与 Visual C++ 的随机库
- html - margin-top 和 marin-left 不知从何而来
- javascript - 不使用背景过滤器在视频顶部的整个屏幕上覆盖半透明
- angular - 如何在 Angular 订阅块中测试代码,而不会在后续订阅块中覆盖值?
- c - C中二维数组的strcpy问题
- matlab - 多维插值:返回函数
- docker - 重定向到无效的 URI。Jenkins 在 Nginx 后面的 docker 容器中