You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为ngx-datatable添加含编辑/删除按钮的列并传递行ID至TS函数?

实现ngx-datatable新增操作列(编辑/删除按钮)并传递行ID

1. 修改HTML模板,添加操作列

在现有ngx-datatable的列列表末尾新增一列,用于放置编辑和删除按钮。通过cellTemplate获取当前行的数据,点击按钮时将行ID(这里用storeId,可根据实际字段名调整)传递到TS文件的对应函数中:

修改后的完整HTML代码:

<!-- Container-fluid starts-->
<div class="container-fluid">
    <div class="row">
        <div class="col-sm-12">
            <div class="card">
                <div class="card-header">
                    <h5>Page Details</h5>
                </div>
                <div class="card-body">
                    <div class="custom-datatable">
                        <div class="clearfix"></div>
                        <ngx-datatable class="bootstrap" [rows]="branches" [columnMode]="'force'" [headerHeight]="50"
                            [footerHeight]="50" [rowHeight]="'auto'" [limit]="5" [selected]="selected"
                            [selectionType]="'checkbox'" [selectAllRowsOnPage]="false" (select)='onSelect($event)'>
                            <!-- 复选框列 -->
                            <ngx-datatable-column [width]="30" [sortable]="false" [canAutoResize]="false"
                                [draggable]="false" [resizeable]="false" [headerCheckboxable]="true"
                                [checkboxable]="true">
                            </ngx-datatable-column>
                            <!-- 原有列 -->
                            <ngx-datatable-column name="name"></ngx-datatable-column>
                            <ngx-datatable-column name="location"></ngx-datatable-column>
                            <ngx-datatable-column prop="storeId"></ngx-datatable-column>
                            <!-- 新增操作列 -->
                            <ngx-datatable-column name="操作" [width]="150">
                                <ng-template let-row="row" ngx-datatable-cell-template>
                                    <button type="button" class="btn btn-primary mr-2" (click)="editBranch(row.storeId)">
                                        编辑
                                    </button>
                                    <button type="button" class="btn btn-danger" (click)="deleteBranch(row.storeId)">
                                        删除
                                    </button>
                                </ng-template>
                            </ngx-datatable-column>
                        </ngx-datatable>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<!-- Container-fluid Ends-->

注:已移除原复选框列内的Delete按钮,将操作按钮统一放到新增列中,避免布局混乱。

2. 在组件TS文件中实现编辑、删除函数

在对应组件的.ts文件中添加两个函数,接收传递的行ID并编写业务逻辑:

export class BranchComponent {
    branches: any[] = []; // 你的数据源
    selected: any[] = [];

    // 编辑函数
    editBranch(storeId: number) {
        // 编写编辑逻辑,比如跳转编辑页、弹窗编辑表单等
        console.log('编辑门店ID:', storeId);
        // 示例:this.router.navigate(['/branch/edit', storeId]);
    }

    // 删除函数
    deleteBranch(storeId: number) {
        // 编写删除逻辑,比如调用删除接口、弹窗确认等
        if (confirm(`确定要删除ID为${storeId}的门店吗?`)) {
            console.log('删除门店ID:', storeId);
            // 示例:this.branchService.deleteBranch(storeId).subscribe(...);
        }
    }

    onSelect(event: any) {
        // 原有选择逻辑
        this.selected = event.selected;
    }
}

如果行ID字段不是storeId,只需将代码中的row.storeId替换为实际字段名(如row.id)即可。

内容的提问来源于stack exchange,提问作者Nadula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 09:30:48