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

Angular Material Table提交时如何仅提交被选中的行数据

MatTable选中行提交实现方案

mat-table 及 MatTableDataSource 没有专门的内置方法直接过滤提交选中行,但可以通过以下两种极简方案实现需求:

方案1:直接过滤现有数据源(适合你当前的代码结构)

你当前每行数据已经自带selected标记,提交前仅需对数据源做一次过滤即可:

// 表单提交逻辑中加入这段代码
const submitData = myTableData.filter(item => item.selected);
// 后续将submitData提交给后端即可

如果不需要把selected字段传给后端,可加一步映射删除字段:

const submitData = myTableData
  .filter(item => item.selected)
  .map(({selected, ...rest}) => rest);

如果你的数据源是绑定在MatTableDataSource实例上,替换myTableData为yourDataSource.data即可。

方案2:使用SelectionModel管理选中状态(官方推荐写法)

如果你的表格复选框是按照Angular Material官方示例用SelectionModel维护选中状态,可直接调用内置属性获取选中行,无需手动遍历:

基础定义

import {SelectionModel} from '@angular/cdk/collections';

// 组件类内定义多选模型,第一个参数true代表支持多选
selection = new SelectionModel<any>(true, []);

提交时直接取选中数据

const submitData = this.selection.selected;

这种方案不需要侵入原始数据加selected字段,耦合度更低,适合复杂表格场景使用。

内容的提问来源于stack exchange,提问作者js-newb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:06:03