Как удалить элемент в массиве с обратной сортировкой в ​​* ngFor в Angular - PullRequest
1 голос
/ 05 мая 2020

Я пытаюсь удалить указанный c элемент в массиве на основе index. В настоящее время у меня проблема с удалением первого и последнего элемента массива. Когда я пытаюсь удалить последний элемент, первый элемент удаляется, и наоборот.

Вот отрывок из моего кода

HTML

<div *ngFor="let item of itemsList.slice().reverse(); index as i">
  <ion-item>{{item.name}} <button (click)="deleteItem(i)">Delete</button></ion-item>
</div>

TS

itemsList = [{
  name: 'Item 0'
}];
count = 0;

constructor() {}

addItem() {
  this.count += 1
  this.itemsList.unshift({
    name: `Item ${this.count}`
  })
}

deleteItem(index) {
  console.log('Delete ', this.itemsList[index].name)
  this.itemsList.splice(index, 1)
}

Я создал рабочий пример с помощью StackBlitz. Может ли кто-нибудь помочь?

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Используйте length - index - 1 в вашем соединении, чтобы получить правильный индекс нормального массива.

this.itemsList.splice(this.itemsList.length - index -1, 1)
0 голосов
/ 05 мая 2020

Я не могу придумать ни одной причины, по которой вы бы не стали кодировать это так:

(click)="deleteItem(item)"

Это действительно лучший способ писать код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...