繁体   English   中英

同组处理选择p-checkbox

[英]Handle selection p-checkbox with the same group

我有一个如下列表:

 rows: any[] = [{"id":"1721079361", "type":"0002", "number":"2100074912"},
                {"id":"1721079363", "type":"0003", "number":"2100074913"},
                {"id":"1721079363", "type":"0004", "number":"2100074914"},
                {"id":"1721079361", "type":"0001", "number":"2100074911"}];

我想用复选框加载到桌子上。 在此处输入图像描述

用户只选择具有相同 Id 的项目。 这是 HTML

<p-table [value]="rows">
    <ng-template pTemplate="header">
        <tr>
           <td>
                </td>
            <th>ID</th>
            <th>Type</th>
            <th>Number</th>
        </tr>
    </ng-template>
      <ng-template   pTemplate="body" let-row>
         <tr [pSelectableRow]="row">
           <td>
                <p-checkbox [(ngModel)]="selectedValues" value="{{row.id}}"></p-checkbox>
            </td>
            <td>{{row.id}}</td>
            <td>{{row.type}}</td>
            <td>{{row.number}}</td>
        </tr>
    </ng-template>
</p-table>

Test : {{selectedValues}}

但直到现在,我都找不到解决方案。 请建议https://stackblitz.com/edit/angular-8ddptg

您可以使用禁用属性并将其与行值绑定,动态更改任何复选框的事件。

组件.html

<p-checkbox [disabled]="row && row.isDisable" [(ngModel)]="selectedValues" value={{row.id}}" (onChange)="updateList(selectedValues)" ></p-checkbox>

组件.ts

updateList(val){
    if(val.length === 0){
      for(let i = 0; i<this.rows.length ;i++){
        this.rows[i]['isDisable'] = false;
      }
    }else{
       let id = val[0];
        for(let i = 0; i<this.rows.length ;i++){
          if(this.rows[i]['id']!== id){
            this.rows[i]['isDisable'] = true;
          }
        }
    }

  }

这是工作代码

希望这能解决您的目的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM