【发布时间】:2017-11-13 15:15:02
【问题描述】:
我正在使用 Primeng 数据表来显示数据库中的可编辑条目。单击一行时,将显示一个新组件以允许编辑该行的关联数据。单击新行时,组件将改为显示该行的数据,依此类推。
显然,这是排他性的 - 一次只能选择一行。 I want to highlight the currently 'active' row in a different color, so when a new row is selected any previously hightlighted row should be reset to its default color.
目前我的模板中有以下内容:
<p-dataTable [value]="rowData" [rowStyleClass]="highlightSelectedRow" [rowHover]="true" (onRowClick)="rowClick($event)">
<ng-template ngFor let-col [ngForOf]="cols">
<p-column [field]="col.field" [header]="col.header"></p-column>
</ng-template>
</p-dataTable>
...在我的组件中:
rowClick($event){
const rowData = $event.data;
rowData.selected = !rowData.selected;
// and do some other stuff...
}
highlightSelectedRow(rowData: any, rowIndex: number){
return (rowData.selected) ? 'selected' : '';
}
...CSS 为所选行设置样式:
.row.selected {
background-color: red;
}
这可以突出显示单击的行,但突出显示的行仍然突出显示,我想知道重置它们的最佳方法。
我想我可以遍历所有数据行并找到 selected 属性设置为 true 的行并将其设置为 false,但这似乎是一种相当低效的方法,尤其是当我处理许多数千行数据。
我是否错过了使用 Primeng 执行此操作的更好的内置方法?
【问题讨论】: