如何使用priming中的默认排序使p表重置?

时间:2019-10-10 13:18:24

标签: angular primeng

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

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

2 个答案:

答案 0 :(得分:1)

问题在于sortField和sortOrder是setter和触发器加载。 您可以通过这种方式对其进行破解。

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是否设置并返回。

我会选择第二个选项,因为这不是hack,只是一个验证。关键是必须像您的示例一样最后设置sortField。

答案 1 :(得分:1)

我尝试了@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();