angular не может отслеживать элементы в массиве и не знает, какие элементы были удалены или добавлены.
В результате Angular необходимо удалить все элементы DOM, связанные с данными.и создайте их снова.Это означает много манипуляций с DOM.
, но вы можете попробовать с пользовательским треком:
<form>
<mat-form-field *ngFor="let item of items; let i = index; trackBy:customTrackBy">
<input matInput [(ngModel)]="items[i]" [matAutocomplete]="itemAutocomplete"
name="items[{{i}}]">
<mat-autocomplete #itemAutocomplete="matAutocomplete" [displayWith]="displayObject">
<mat-option *ngFor="let item of availableItems" [value]="item">{{item.name}} </mat-option>
</mat-autocomplete>
<button mat-button mat-icon-button matSuffix type="button" (click)="deleteItem(i)"><mat-icon>close</mat-icon></button>
</mat-form-field>
<button class="btnType01" mat-raised-button type="button" (click)="addItem()"><mat-icon>add</mat-icon>Add Item</button>
</form>
ts:
customTrackBy(index: number, obj: any): any {
return index;
}
DEMO