问题描述:
在Angular 6中,使用removeAt和trackBy方法更新formArray时,会导致DOM不正确地更新。
解决方法:
要解决这个问题,可以通过以下步骤来更新formArray并正确更新DOM:
trackByFn(index: number, item: any) {
return index;
}
removeItem(index: number) {
const formArray = this.myForm.get('myFormArray') as FormArray;
formArray.controls.splice(index, 1);
formArray.updateValueAndValidity();
}
这样做的原因是,Angular在更新DOM时会使用trackBy函数来判断当前元素是否需要重新渲染。如果没有正确设置trackBy函数,Angular将无法正确判断元素之间的关系,从而导致DOM更新不正确。
通过上述步骤,你可以正确地使用removeAt和trackBy方法更新formArray并更新DOM。