Удалить Tr в Iterated *ngFor Использование шаблонов, управляемых в Angular 2/4

Как я могу удалить эту строку, используя шаблонную форму? Я запутался, так как массивы повторяются в *ngFor? как я могу это сделать? Вот что я сделал ниже.

HTML

<tr *ngFor="let innerItem of project.material_projects | orderBy: {property: column, direction: direction} |  let i = index">
    <td>{{innerItem.material.name}}</td>
    <td>{{innerItem.balance}}</td>
    <td>
    <button type="button" class="btn btn-sm btn-danger" (click)="onDelete(i)"> Delete</button>
    </td>
</tr>

TS

onDelete(index: number) {
      this.projects.material_projects.splice(index, 1)
}

2 ответа

Попробуй так:

<tr *ngFor="let i = index; let innerItem of project.material_projects | orderBy: { property: column, direction: direction }">
    <td>{{innerItem.material.name}}</td>
    <td>{{innerItem.balance}}</td>
    <td>
        <button type="button" class="btn btn-sm btn-danger" (click)="onDelete(i)"> Delete</button>
    </td>
</tr>

и метод onDelete, как показано ниже:

onDelete(index) {
    this.project.material_projects.splice(index, 1);
}

Проблема с вашей логической частью:

| orderBy: {property: column, direction: direction} |

Это переупорядочивает ваш project.material_projects массив, и вы используете индекс переупорядоченного массива, поэтому вам нужно выполнить ту же операцию перед этой строкой:

this.projects.material_projects.splice(index, 1)

И это сделано.


ИЛИ ЖЕ

Вы можете передать id если его уникальный лайк, onDelete(innerItem.id)

затем

onDelete(id: number) {
    let index = // logic to find index of that id ;
    this.projects.material_projects.splice(index, 1);
}
Другие вопросы по тегам