angular - 多个错误 - formGroup 需要一个 FormGroup 实例 - 表单工作正常,但控制台中显示多个错误
问题描述
我有一个在延迟 3 秒后可以完美运行的表格。在这 3 秒内,表格中填满了 15 条记录中的多个错误
formGroup expects a FormGroup instance. Please pass one
Cannot read property 'get' of undefined
我的理解是,表单填充是基于 API 调用成功并返回响应的事实。虽然响应不存在,但表单未定义,因此出现错误。
问题:如何摆脱这个问题以及最好的方法
HTML 模板
<div [formGroup]="productForm">
<div class="r-package-list" formArrayName="packages">
<div
class="r-package-list-item"
*ngFor="let package of packageForms.controls; let i = index"
[formGroupName]="i"
>
<div class="formArrayControlDiv">
<label class="Package-Name-Label"
><input
type="checkbox"
class="Package-Selection-Checkbox"
formControlName="packageCheckBox"
/>
</label>
<input
type="number"
formControlName="packageQuantity"
/>
<input
readonly
type="text"
formControlName="packagePrice"
/>
</div>
</div>
</div>
</div>
TS 文件
ngOnInit() {
this.apiService.getPackages(id).then((result: any) => {
this.createForm(result.data);
});
}
// Creating a Product Form
createForm(data) {
const arr = [];
for (let i = 0; i < data.length; i++) {
arr.push(this.packageArrayFunction(data[i]));
}
this.productForm = this.fb.group({
packages: this.fb.array(arr)
});
}
// Creating a Dynamic Package Array
packageArrayFunction(packages): FormGroup {
return this.fb.group({
packageCheckBox: [false],
packageQuantity: [''],
packagePrice: [packages.basic_price + '/' + packages.base_unit]
});
}
get packageForms() {
return this.productForm.get('packages') as FormArray;
}
解决方案
推荐阅读
- mips - MIPS - 如何在访问和保存数组的同时编写 for 循环
- c# - WCF - 获取原始请求/回复和操作名称
- flutter - 如何在 Flutter 中实现和扩展 Base Page
- self-signed-certificate - 将自签名证书导入“受信任的根证书颁发机构”存储是否错误?
- python - Python pip 安装错误,“无效语法”
- .net - VB.NET:从服务访问窗口句柄
- mysql - 编写 SQL 查询工作台
- c - 当我有 N 数量的输入时,如何退出 while 循环?
- python - 使用 argparse Python3 自动化任务
- java - BreakIterator 在 Android API 29 和 API 30 中的行为不同