Primeng可排序表指定已排序列

Hol*_*lli 1 primeng angular

我有一个PrimeNG表,一切正常。我已经实现了排序。

我得到的是表中每个列的排序选项,但是我只希望在特定列中使用此选项。

有什么建议吗?

事先感谢

|| 威利..

<p-table [columns]="wikiCols" [value]="wikiItems" selectionMode="single" [(selection)]="selectedItem">
  <ng-template pTemplate="header">
    <tr>
      <th *ngFor="let col of wikiCols" [pSortableColumn]="col.field" >
        {{col.header}}
        <p-sortIcon [field]="col.field" ariaLabel="Activate to sort" ariaLabelDesc="Activate to sort in descending order" ariaLabelAsc="Activate to sort in ascending order"></p-sortIcon>
      </th>
    </tr>
  </ng-template>
  <ng-template pTemplate="body" let-rowData let-columns="columns">
    <tr [pSelectableRow]="rowData">
    <td *ngFor="let col of wikiCols">
      {{rowData[col.field]}}
    </td>
    </tr>
  </ng-template>
</p-table>
Run Code Online (Sandbox Code Playgroud)

pla*_*rsh 5

从文档:

通过添加pSortableColumn伪指令(可将其作为值进行排序的字段)和通过p-sortIcon组件的排序指示符,可以使列可排序。对于动态列,将pSortableColumnDisabled属性设置为true将禁用该特定列的排序。

https://www.primefaces.org/primeng/#/table

因此,我认为您要检查的col.field是是否要排序的列。喜欢

[pSortableColumnDisabled]="col.field === 'whatever'"
Run Code Online (Sandbox Code Playgroud)

另外,如Aman Chhabra所述,在p-sortIcon上放置* ngIf

    <p-sortIcon *ngIf="col.field !== 'whatever'" [field]="col.field" ariaLabel="Activate to sort" ariaLabelDesc="Activate to sort in descending order" ariaLabelAsc="Activate to sort in ascending order"></p-sortIcon>
Run Code Online (Sandbox Code Playgroud)


小智 5

以下对我来说是一种魅力:

  <ng-template pTemplate="header" let-columns>
        <tr>
          <ng-container *ngFor="let col of columns" >
            <th *ngIf="col.field === 'col1'" [pSortableColumn]="col.field" >{{ col.header }} </th>
            <th  *ngIf="col.field !== 'col1'" >{{ col.header }}</th>
          </ng-container>
        </tr>
 </ng-template>
Run Code Online (Sandbox Code Playgroud)