如何通过点击header(ngx-datatable)来开发排序栏?

How to develop sortable column by click on header ( ngx-datatable)?

如何通过点击header来开发排序栏?

我正在尝试按照文档中的说明进行操作,但它不起作用。

 <ngx-datatable
    #table
    ...
    [rows]='vendors'>

    <ngx-datatable-column name="VENDOR" [flexGrow]="1">
      <ng-template let-column="column" let-sort="sortFn" let-sortDir="sortDir">
        <span (click)="sort($event, sortDir, sortFn)">{{column.name}}</span>
      </ng-template>
      <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
        <div class="vendor-name">{{row.vendorName}}</div>
      </ng-template>
    </ngx-datatable-column>

首先,ngx-datatable默认是支持Sorting的。不要将任何参数传递给排序函数。这不是必需的。这样做:

<ngx-datatable-column name="VENDOR" [flexGrow]="1" [sortable]="true">

如果您使用 ng-template 定义您的列 header,排序将不起作用。默认排序仅在您创建仅具有 ngx-datatable-cell-template 属性的基本列时才有效。

这个有效:

  <ngx-datatable-column name="Navn" prop="name" [flexGrow]="3">
    <ng-template let-value="value" ngx-datatable-cell-template>
      <span [attr.aria-label]="value">{{ value }}</span>
    </ng-template>
  </ngx-datatable-column>

这不是:

  <!-- Name -->
  <ngx-datatable-column name="Navn" prop="name" [flexGrow]="3">
    <ng-template let-column="column" ngx-datatable-header-template>
      <span aria-label="Name">{{ column.name }}</span>
    </ng-template>

    <ng-template let-value="value" ngx-datatable-cell-template>
      <span [attr.aria-label]="value">{{ value }}</span>
    </ng-template>
  </ngx-datatable-column>