Как сделать сброс p-таблицы с сортировкой по умолчанию в primeng? - PullRequest
0 голосов
/ 10 октября 2019

Я загружаю данные из API. Данные огромны, поэтому я использую ленивую загрузку.

При загрузке страницы я сортирую таблицу, предоставляя входные данные в шаблоне HTML, как показано ниже, она работает нормально

<p-table [value]="data" [rows]="10" sortField="id" [sortOrder]="-1" 
  [lazy]="true" (onLazyLoad)="loadLazy($event)">

Но на моей странице есть кнопка сброса, поэтому, если пользователь нажимает кнопку, я пытаюсь сбросить ее по умолчанию.

Итак, в своем коде компонента я использовал следующий код

this.dataTable.reset();

Проблема в том, что я пытаюсь отсортировать таблицу. Поэтому я использовал следующий код:

this.dataTable.reset();
this.dataTable.sortField = 'id';
this.dataTable.sortOrder = 1;

, используя приведенный выше код, таблица сортируется, и проблема заключается в том, что API вызывает 3 раза. Поэтому я пытаюсь реализовать сортировку по сбросу таблицы. Поэтому я попробовал приведенный ниже код:

this.dataTable.reset({'sortField':'id',sortOrder: 1});

Но я получаю сообщение об ошибке. Как я могу это сделать?

1 Ответ

1 голос
/ 14 октября 2019

Проблема в том, что sortField и sortOrder являются установщиками и запускают загрузку. вы можете взломать его, например, следующим образом.

this.dataTable.lazy = false;
this.dataTable.reset();
this.dataTable._sortOrder = 1;
this.dataTable.lazy = true;
// calls the endpoint
this.dataTable.sortField = 'id';

Но, конечно, ваш метод onLazyLoad может проверить, установлено значение $ event.sortField или нет, и вернуть.

Я бы выбрал второевариант, так как это не взлом просто проверка. Дело в том, что sortField должен быть установлен в конце, как в вашем примере.

...