我有一个组件,其中包含FormArray中的输入列表。当我尝试删除其中一个控件时,最后一个控件将消失,而不是选中一个,但是如果我保存表单,则输入列表会正确显示(我删除的那个没有显示,最后一个显示)。
这是我的代码:
component1.component.html
<div [formGroup]="form">
<div [formArrayName]="name">
<div *ngFor="let row of formArr.controls; let i=index; trackBy: trackByIndex" [formGroupName]="i">
<input type="text" formControlName="text" />
<!-- Other inputs, selects... -->
<i class="fa fa-times" aria-hidden="true" (click)="removeOcurrence(i)"></i>
</div>
</div>
</div>
component1.component.ts
@Component({
selector: 'component1',
templateUrl: './component1.component.html',
styleUrls: ['./component1.component.scss']
})
export class Component1 {
...
private _form: FormGroup;
private _formArr: FormArray;
private _name: string;
@Input() set form(form: FormGroup) {
this._form = form;
}
get form(): FormGroup {
return this._form;
}
@Input() set formArr(formArr: FormArray) {
this._formArr = formArr;
}
get formArr(): FormArray {
return this._formArr;
}
@Input() set name(name: string) {
this._name = name;
}
get name(): string {
return this._name;
}
removeOcurrence(index: number): void {
this._formArr.removeAt(index);
}
trackByIndex(index: number): number {
return index;
}
...
}
示例:
例如,如果我点击第二个“X”试图删除第二个元素,只有第三个元素消失(([第一个,第二个]显示),但如果之后我保存表单并刷新页面我得到了正确的清单([第一,第三])。
因此看起来ngFor在删除后没有刷新。