Сортировка p-dataTable не работает, когда p-столбец использует ng-шаблон - PullRequest
1 голос
/ 06 мая 2019

Я пытаюсь отсортировать столбец с шаблоном. Я понимаю, что когда столбец использует шаблон, сортировку следует выполнять, реагируя на событие сортировки.

<p-column field="activityName" [sortable]="true" (onSort)="onNameSorting($event)">
  <ng-template let-col let-activity="rowData" pTemplate="body">
   //..
  </ng-template>
</p-column>

Однако, когда я ставлю точку останова в обработчике событий, ничего не происходит. Я что-то упустил?

onNameSorting(e){
  debugger;       //--> the breakpoint is not being hit
  //...
}

Спасибо за помощь

Редактировать

Точка останова находится под ударом, сортировка выполняется. Тем не менее, никакие изменения не отражаются в dataTable .

onNameSorting(e, dt){
  debugger;              //This break point is being hit now.
  if(!!e.order && e.order > 0){
     this.filteredItems = this.filteredItems
        .sort((a, b) => (a.activityName < b.activityName) ? -1 : 1);
  }else{
     this.filteredItems = this.filteredItems
        .sort((a, b) => (a.activityName > b.activityName) ? -1 : 1);
  }
}

1 Ответ

1 голос
/ 06 мая 2019

Я предполагаю, что вы используете старую простую таблицу данных.В этой версии не было привязки (onSort)="onNameSorting($event)" к p-column.Переместите это к p-dataTable

Пример: -

<p-dataTable scrollable="true" [value]="_rowList" [selectionMode]="selectionMode"
             [responsive]="true" (selectionChange)="rowSelectionChange($event)"
             (click)="rowSingleClick($event)" (dblclick)="rowDoubleClick($event)" [(selection)]="_selectedEntity"
<!-- refer to the next line, above lines are bunch of attributes -->
             (onSort)="sortData($event, dt)"[sortField]="sortField" [sortOrder]="sortOrder" #dt>
<p-column field="activityName">
  <ng-template let-col let-activity="rowData" pTemplate="body">
   //..
  </ng-template>
</p-column>
</p-dataTable>

Предложение: Они запустили новую таблицу PrimeNg Turbo .Это намного проще и быстрее.

...