如何使用 primeng table select Angular 中的多行?

How to select multiple rows in Angular using primeng table?

我有一个 primeng table。我想要 select 多行 .

html:

<p-contextMenu #cm [model]="items"></p-contextMenu>
<p-table [columns]="columns" [value]="values" [(contextMenuSelection)]="selectedProduct" [contextMenu]="cm" dataKey="tradeId" [rowHover]=true
     selectionMode="multiple" [(selection)]="selectedProducts2"
     >
<ng-template pTemplate="header" let-columns>
<tr>
  <th pSortableColumn *ngFor="let col of getKeys(columns)" pReorderableColumn pResizableColumn>
    {{col}}
  </th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-block let-columns="columns" let-rowIndex="rowIndex">
 <tr [pSelectableRow]="block" [pSelectableRowIndex]="rowIndex">
  <td *ngFor="let col of getKeys(columns)">
    {{block[col]}}
  </td>
</tr>
</ng-template>

打字稿

import {Component, OnInit, Input, SimpleChanges} from '@angular/core';
import {MenuItem} from "primeng/api";

@Component({
selector: 'app-data-table',
templateUrl: './data-table.component.html',
styleUrls: ['./data-table.component.css']
})
export class DataTableComponent implements OnInit {

@Input() public omsBlockList : OmsBlock[] =[];
@Input() public selectedEntity: any ='';
@Input() public entityData : any;
    
selectedProduct=OmsBlock[];

selectedProducts2=OmsBlock[];

omsBlocks: OmsBlock[]=[];
items: MenuItem[]=[];
_entity=new Map<String,String>();
columns: any;
cols:any[]=[];
entityfieldMap: any=new Map();
exportColumns: any[];

constructor() { 
this.selectedProduct={} as OmsBlock;
}

ngOnInit() {
  this.exportColumns=this.cols.map(col => ({title: col.header, datakey: col.field}));
}
getKeys(map):string[]{ 
 if(map!=null){
 return Array.from(map.values());
 }
}

ngOnChanges(changes:SimpleChanges){
 this._entityData=new Map<String,String>();
 for(var val of this.entityData[this.selectedEntity]["fields"]){
  this._entityData.set(val["displayName"], val["fieldName"]);
  }
   this.columns.this._entityData;
}

}

在 select 单个行上,所有行都得到 selected。我想使用不带 metakey 的 select 行,并且在单击每一行时,该行必须被 selected。在 select 一行中,多行得到 selected。我指的是来自该站点的相同代码-> https://primefaces.org/primeng/showcase/#/table/selection 我有什么错误吗?

我猜你的有问题

[dataKey]="tradeId"

每行的 tradeId 是否唯一? 我玩了一下,它与 [datakey]="code" 一起工作正常, 你可以在这里查看 https://stackblitz.com/edit/primeng-tableselection-demo-9t5cyt?file=src%2Fapp%2Fapp.component.ts