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

Angular中如何获取mat-checkbox多选的所有选中对象并组成数组

实现修改步骤
  • 第一步:在组件属性声明区域新增选中项存储数组
// 新增属性,用于存储用户勾选的子租户数据
selectedCurrentSubtenants: {subtenantName: string, currentLeaseExpiration: string}[] = [];
  • 第二步:修改HTML中mat-checkbox的绑定逻辑,原所有复选框绑定同一个ngModel的写法不符合多选场景,替换为选中状态判断
<mat-checkbox
 color="primary"
 [checked]="selectedCurrentSubtenants.some(item => item.subtenantName === subtenant.subtenantName)"
 (change)="changeCurrentSubtenants($event,subtenant)"
 style="margin-left:10px;">
 <div class="deal-text-label">
   {{subtenant.subtenantName}}
</div>
</mat-checkbox>

注:如果子租户数据有唯一id字段,建议用id替代上面的subtenantName做匹配判断,准确率更高

  • 第三步:修改changeCurrentSubtenants的业务逻辑,实现勾选添加、取消勾选删除的能力
changeCurrentSubtenants(e:any,rowData:any){    
    if(e.checked){
      // 勾选时判断是否已存在,避免重复添加
      const existIndex = this.selectedCurrentSubtenants.findIndex(item => item.subtenantName === rowData.subtenantName);
      if(existIndex < 0) {
        this.selectedCurrentSubtenants.push({
          subtenantName: rowData.subtenantName,
          currentLeaseExpiration: rowData.currentLeaseExpiration
        });
      }
    } else {
      // 取消勾选时移除对应数据
      this.selectedCurrentSubtenants = this.selectedCurrentSubtenants.filter(item => item.subtenantName !== rowData.subtenantName);
    }
    // selectedCurrentSubtenants 就是你需要的最终选中数组
    console.log('已选中子租户:', this.selectedCurrentSubtenants);
}

如果你需要把选中结果同步到表单字段中,可在上述方法最后补充:

this.dealDispositionFormFields.currentSubtenants = this.selectedCurrentSubtenants;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:54:03