删除控件后,FormArray的控件无法正确显示

时间:2018-03-05 12:25:10

标签: angular

我有一个组件,其中包含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;
    }

    ...
}

示例:

enter image description here

例如,如果我点击第二个“X”试图删除第二个元素,只有第三个元素消失(([第一个,第二个]显示),但如果之后我保存表单并刷新页面我得到了正确的清单([第一,第三])。

因此看起来ngFor在删除后没有刷新。

0 个答案:

没有答案