Я создал пример для разработки этого.
Разметка:
<table>
<thead>
<tr>
<th></th>
<th>Category</th>
<th>Product</th>
<th>Price</th>
</tr>
</thead>
<tbody *ngFor="let value of values; let i = index;">
<tr>
<input type="checkbox" (change)="addChecked(i, $event.target.checked)"/>
<td>Delete</td>
<td>{{value}}</td>
</tr>
</tbody>
</table>
<button (click)="delete()">Delete</button>
Логика:
export class App {
values = [1, 2, 3, 4];
checked = [];
constructor() {
}
addChecked(i, isChecked) {
isChecked ? this.checked.push(i) : this.checked.splice(i, 1);
}
delete() {
for (var i = this.checked.length - 1; i >= 0; --i) {
this.values.splice(this.checked[i], 1);
}
this.checked = [];
}
}
Предположим, что данные, извлеченные из API, хранятся вмассив values
и отображается в таблице.В каждой строке есть флажок для выбора строки и изменения в флажке добавить / удалить элемент в массиве checked
.Массив checked
хранит индексы строк / значений.Кнопка удаления в конце таблицы привязывается методом delete()
.После щелчка циклически перемещайтесь по массиву checked
и удаляйте элементы из массива values
, и изменения автоматически отражаются.
Цикл выполняется в обратном порядке, так как значения индекса slice
метода меняются при каждом удалении элемента измассив.
Вот Plnkr: Угловое удаление элемента из таблицы