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

Angular移除MatTableDataSource中montoDonar为0行并刷新表格的方法

Angular Material表格过滤montoDonar为0行的实现

你直接在接口返回数据后先做一层过滤,把金额为0的条目筛掉再传给表格数据源就行,表格会自动跟着数据源刷新,不用额外写视图更新的代码。

修改后可直接运行的组件代码

export class DonacionListComponent implements OnInit {

  displayedColumns: string[] = ['idDonacion', 'usuario', 'montoDonar', 'fechaPlantacion', 'acciones'];
  dataSource : MatTableDataSource<Donacion>;
  
  constructor(private donacionService: DonacionService) { }

  ngOnInit(): void {
    this.getAllDonaciones();
  }


  getAllDonaciones(){
    this.donacionService.getAllDonaciones().subscribe((data:any)=>{
          // 过滤掉montoDonar等于0的记录
          const filteredList = data['body'].filter(donacion => donacion.montoDonar !== 0);
          this.dataSource = new MatTableDataSource(filteredList);     
        });
  }


  applyFilter(value: string) {
    this.dataSource.filter = value.trim().toLowerCase();
  }
  eliminar(id: number) {
    const ok = confirm('¿Estás seguro de eliminar la donacion?');
    if (ok) {
      this.donacionService.delete(id).subscribe(() => {
        this.getAllDonaciones();
      });
    }
  }
  
}

实现说明

  • 过滤逻辑放在接口订阅回调里,不管是首次加载、删除数据后重拉列表,都会自动执行过滤,不会漏过0金额的行
  • 用原生filter方法不会修改原始接口返回数据,如果你后续需要用到全量数据做统计,可以单独声明个变量存完整的data['body'],不影响传给表格的过滤后数据
  • 原有的搜索过滤applyFilter、删除功能逻辑都不用改,完全兼容,删除操作后重走getAllDonaciones时会自动再次过滤,表格自动渲染最新结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:36:16