0

我正在使用primengp-tablep-checkbox。我希望能够在不选中复选框的情况下突出显示单击的行(或行内容)。应在单击复选框本身而不是行时选中复选框。我尝试使用[pSelectableRow],但除了突出显示它之外,它还检查复选框。

<p-table [columns]="cols" [value]="brands" [(selection)]="selected" dataKey="vin">
    <ng-template pTemplate="header" let-columns>
        <tr>
            <th style="width: 3em">
                <p-tableHeaderCheckbox></p-tableHeaderCheckbox>
            </th>
            <th *ngFor="let col of columns">
                {{col.header}}
            </th>
        </tr>
    </ng-template>
    <ng-template pTemplate="body" let-rowData let-columns="columns">
        <tr [pSelectableRow]="rowData">
            <td>
                <p-tableCheckbox [value]="rowData"></p-tableCheckbox>
            </td>
            <td *ngFor="let col of columns">
                {{rowData[col.field]}}
            </td>
        </tr>
    </ng-template>
</p-table>

我应该怎么做才能只突出显示单击的行,而不选中复选框?我创建了一个Stackblitz示例。

4

2 回答 2

0

在行上添加一些类

<tr [pSelectableRow]="rowData" class="some-class">

然后在css中做伎俩

.some-class:hover {
  background-color: some color... or put any style you need
}
于 2021-02-17T11:14:25.987 回答
0

我能够通过维护一个highlight获取单击行值的变量并将突出显示类仅分配给该值等于单击行的值的行来实现这一点。

<ng-template pTemplate="body" let-rowData let-columns="columns">
        <tr class="some-class"  [class.ui-state-highlight]="rowData === highlighted">
            <td>
                <p-tableCheckbox [value]="rowData"></p-tableCheckbox>
            </td>
            <td *ngFor="let col of columns">
            
                <a (click)="highlighted = rowData"> {{rowData[col.field]}}</a>
            </td>
        </tr>
    </ng-template>

在此处更新 Stackblitz 。

于 2021-02-22T07:06:35.100 回答