在Angular 14中,从FormArray中删除一个项目会清除其他项目的值。此问题的解决方法是使用splice函数从FormArray中删除项目而不是使用removeAt函数。这样FormArray中的其他项目的值就不会被清除。
示例代码:
在组件.ts文件中:
// import FormArray, FormGroup import { FormArray, FormGroup } from '@angular/forms';
export class MyComponent { myFormGroup: FormGroup;
constructor() { this.myFormGroup = new FormGroup({ myFormArray: new FormArray([ this.createItem('Item 1'), this.createItem('Item 2'), this.createItem('Item 3') ]) }); }
createItem(value: string): FormGroup { return new FormGroup({ myControl: new FormControl(value) }); }
deleteItem(index: number) { const formArray = this.myFormGroup.get('myFormArray') as FormArray; formArray.splice(index, 1); // 使用splice函数删除项目 } }
在组件.html文件中:
在这个示例中,我们使用splice函数从FormArray中删除项目,确保其他项目的值不会被清除。