【问题标题】:How to make p-table reset with default sorting in primeng?如何在primeng中使用默认排序重置p表?
【发布时间】:2020-02-27 05:56:46
【问题描述】:

我正在从 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});

但我得到了错误。我该怎么做?

【问题讨论】:

    标签: angular primeng


    【解决方案1】:

    问题在于 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 必须像你的例子一样最后设置。

    【讨论】:

      【解决方案2】:

      我尝试了@tano 提供的答案,但没有维护默认排序('id')。

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

      【讨论】:

        猜你喜欢
        • 2020-11-19
        • 1970-01-01
        • 1970-01-01
        • 2022-06-27
        • 2021-04-23
        • 1970-01-01
        • 2018-12-11
        • 2018-12-07
        • 1970-01-01
        相关资源
        最近更新 更多