Angular,按ID从html-table中删除一行

时间:2017-10-31 08:07:58

标签: html angular html-table

这次我需要有关如何在单击删除按钮时根据html-table中的行ID删除行的帮助。表数据源来自分离的Json文件。

表格如下: Image Link



<div class="container">
        <table border=1 class="table">
          <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
            <th>Age</th>
            <th>Phone</th>
          </tr>
            <tr *ngFor="let d of data | async" [attr.id]="d.id"> <!--each row id == id-->
                <td>{{ d.id }}</td>
                <td>{{ d.name }}</td>
                <td>{{ d.email }}</td>
                <td>{{ d.age }}</td>
                <td>{{ d.phone }}</td>
                <button id="remove">DELETE ROW</button>
            </tr>
        </table> 
    </div>
&#13;
&#13;
&#13;

如果需要更多代码段,请与我们联系。谢谢。

3 个答案:

答案 0 :(得分:1)

我会在按钮上添加一个(click)事件并传递'd'作为参数。然后在点击调用的函数中,我将拼接'已删除'项。

添加(点击)活动的代码:

<button id="remove" (click)="functionToDeleteItem(d)">DELETE ROW</button>

拼接数组并删除已删除项目的示例:

stackoverflow past example - How do I remove an array item in TypeScript?

另外,除非你在按钮中使用id =“remove”用于css之类的其他用途,否则我会删除它,因为它不需要。

答案 1 :(得分:1)

您可以在HTML文件中添加此代码

<div class="container">
            <table border=1 class="table">
              <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Email</th>
                <th>Age</th>
                <th>Phone</th>
              </tr>
                <tr *ngFor="let d of data | async" [attr.id]="d.id"> <!--each row id == id-->
                    <td>{{ d.id }}</td>
                    <td>{{ d.name }}</td>
                    <td>{{ d.email }}</td>
                    <td>{{ d.age }}</td>
                    <td>{{ d.phone }}</td>
                    <button id="remove" (click)="deleteRow(d.id)">DELETE ROW</button>
                </tr>
            </table> 
        </div>

并在您的组件文件中添加此代码

deleteRow(id){
        for(let i = 0; i < this.data.length; ++i){
            if (this.data[i].id === id) {
                this.data.splice(i,1);
            }
        }
    }

答案 2 :(得分:0)

<div class="container">
        <table border=1 class="table">
          <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
            <th>Age</th>
            <th>Phone</th>
          </tr>
            <tr *ngFor="let d of data | async" [attr.id]="d.id"> <!--each row id == id-->
                <td>{{ d.id }}</td>
                <td>{{ d.name }}</td>
                <td>{{ d.email }}</td>
                <td>{{ d.age }}</td>
                <td>{{ d.phone }}</td>
                <button id="remove" (click)="deleteRow(d)">DELETE ROW</button>
            </tr>
        </table> 
    </div>

类型脚本

deleteRow(d){
    const index = this.data.indexOf(d);
    this.data.splice(index, 1);
}