Соответствующий пункт не удаляет Угловой 12

#javascript #angular #typescript

Вопрос:

Попытался удалить элемент из массива, но он удаляет последний индекс этого массива, а не соответствующий, ниже приведен мой код. Пример: если я удаляю первый элемент из списка, то это удаление последнего элемента из списка.

код компонента.ts

  this.items.splice(this.items.indexOf(id));
 

html-код

 <span class="close" style="cursor: pointer;" (click)="removeItems(item.Id)">
   <i class="far fa-trash-alt fa-2x" style="color: red;"></i>
</span>
 

Элементы списка

Я использую цикл *ngFor для получения своих товаров. Я не помещал этот код сюда.

Ответ №1:

  1. Если вы передадите отрицательное значение splice функции, она удалит элемент(ы) из конца.
  2. Вам нужно передать количество предметов, которые нужно удалить. Итак, вы ищете это : this.items.splice(this.items.indexOf(id), 1);

Комментарии:

1. Хороший улов. Я некоторое время смотрел на это, пока не понял, что количество предметов не передается в качестве аргумента.

Ответ №2:

Если элементы представляют собой коллекцию объектов, то использование indexOf только с идентификатором, скорее всего, будет возвращать -1 каждый раз, что объясняет, почему удаляется последний элемент.

Вам, вероятно, понадобится что-то вроде

 const itemToRemove = this.items.findIndex(i => i.id === id);
if(itemToRemove >= 0) {
  this.items.splice(itemToRemove, 1);
}