我正在研究一个使用PrimeNg作为UI库的项目。 使用该表时,我发现datakey属性未选择所有相关行。当我控制台记录选择阵列时,它显示仅选择了1个。但是用户界面会选择所有相关行。
例如,我有一个表,其中包含具有多个trackingNo的行。 每行可能具有相同的跟踪号。 当我选择某一行时,它应选择所有具有相同trackingNo的相关行。
我想念什么吗?还是一个错误?
<p-table
[(selection)]="selectedRows"
[columns]="cols"
[dataKey]="'trackingNo'"
[selectionMode]="'multiple'"
[lazy]="false"
[rows]="20"
[value]="values$ | async">
答案 0 :(得分:1)
每次看到新行以检查trackingNo
这个汽车年基示例,其中我选择当前选择汽车年的每个汽车基
<p-table [columns]="columns" [value]="carsData" selectionMode="multiple"
[(selection)]="selectedCars" (onRowSelect)="onRowSelect($event)">
<ng-template pTemplate="header" let-columns>
<tr>
<th *ngFor="let col of columns">
{{col.header}}
</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-rowData let-columns="columns" let-index="rowIndex">
<tr [pSelectableRow]="rowData" [pSelectableRowIndex]="rowIndex">
<td *ngFor="let col of columns" class="ui-resizable-column">
{{rowData[col.field]}}
</td>
</tr>
</ng-template>
</p-table>
组件
onRowSelect(event) {
const selectedCar = event.data;
setTimeout(() => {
this.selectedCars = cars.filter(car => car.year == selectedCar.year);
}, 0)
}