【发布时间】:2021-05-14 08:53:31
【问题描述】:
我正在创建一个可过滤的表。第一列包含用于选择行的复选框,最终用户可以对选择进行一些操作。
在过滤器上,我正在做:
public resetFormRows(items: any[]) {
this.formGroup.removeControl('rows');
const newRows = items.map(_ => new FormControl(false));
const newFormArray = new FormArray(newRows);
this.formGroup.addControl('rows', newFormArray);
}
过滤表格后,我可以 console.log 控件并看到 FormArray 包含新的 FormControl。但是,当我选中移动的行(即更改的行索引)的复选框时,会显示以下错误:
ERROR 错误:没有 FormControl 实例附加到表单控件 带有路径的元素:'rows -> 1'
这是一个演示该错误的堆栈闪电战: https://stackblitz.com/edit/angular-8-template-form-fzsyse?file=src%2Fapp%2Ftable.component.ts
要显示错误,请执行以下操作:
- 选择过滤器复选框:“有所有者吗?”
- 选中“订书机”复选框
我有几个问题:
- 为什么会出现此错误,为什么我的 console.log 显示 FormControl 但错误提示我没有?
- 错误堆栈跟踪没有指向我的代码库中的任何特定内容。那么,人们通常如何调试这些问题?
【问题讨论】:
-
这很奇怪,如果你用 1 替换
i,它会起作用,我并不是说这是一个修复,我只是对这种行为感到好奇
标签: angular angular-reactive-forms