Primeng paginator在调用API后无法重置第1页

Phạ*_*Bảo 2 javascript primeng angular

我有2个函数来加载数据:当初始页面和搜索页面.当init页面时,数据显示有5页.我点击第3页,分页的数据显示确定.之后,输入数据搜索.数据表是重新加载的,但页码不会重置为1,它仍然是第3页的html:

<p-paginator rows="5" totalRecords="{{totalRecords}}"  (onLazyLoad)="paginate($event)"
 (onPageChange)="paginate($event)" [rowsPerPageOptions]="[2,5,10,20]"></p-paginator>
Run Code Online (Sandbox Code Playgroud)

TS:

 defaultPage:0;
 defaultSize:2
paginate(event) {
 let currentPage: number;
    this.defaultPage = event.first / event.rows;
    this.defaultSize = event.rows;
    this.listData = [];
    if (this.isSearch == 1) {
      this.getLoadPageSearch(this.defaultSize, this.defaultPage);
    } else {
      this.getLoadPage(this.defaultSize, this.defaultPage);
    }
}
Run Code Online (Sandbox Code Playgroud)

请告诉我如何在调用另一个API后重置paginator

Bri*_*ian 8

p-paginator组件包含该changePageToFirst函数.要访问此函数,我们需要获取对该组件的ViewChild引用.例如,在我们的模板中,我们定义组件:

<p-paginator rows="10" totalRecords="100" #p></p-paginator>
<button (click)="reset($event)">Reset</button>
Run Code Online (Sandbox Code Playgroud)

在我们的组件中,我们可以按如下方式处理重置事件:

@ViewChild('p') paginator: Paginator;

reset($event) {
    this.paginator.changePageToFirst($event);
}
Run Code Online (Sandbox Code Playgroud)

这是一个演示:https://plnkr.co/edit/FxwTHK0W2WuTCjuqhLp6?p = preview


Sem*_*jić 5

另一个有用的方法是changePage

在模板中:

<p-paginator #pp></p-paginator>
Run Code Online (Sandbox Code Playgroud)

在组件中:

@ViewChild('pp') paginator: Paginator;

this.paginator.changePage(0);
Run Code Online (Sandbox Code Playgroud)

  • 如果分页器注册了 onPageChange 事件怎么办?它正在进入递归。 (3认同)

noo*_*ode 5

对于那些使用 dataTable primeng 组件并使用其延迟分页功能的人,我们可以使用以下命令将页面重置为“1”

this.tableTemplateName.first = 0;
Run Code Online (Sandbox Code Playgroud)

其中设置first=0表示首页