页面大小和记录数不匹配-角度6

时间:2019-05-14 14:09:11

标签: typescript angular6

我正在使用angular6的ngb分页,在给定场景下,API中的totalCount为45,并且在每次页面更改之前,直到第5页它都会发送pageSize = 10,并且效果很好。但是,对于第5页,它发送pageSize = 5,HTML中的寻呼机显示21-30,这是不正确的,应显示为41-45。如果有人可以帮忙的话。

在我的HTML组件中:

 <div class="col-md-6">
                <p><small>{{startIndex}}-{{endIndex}} of over {{totalCount}} results for data</small></p>
            </div>
      <ngb-pagination [collectionSize]="totalCount" [page]="p"
                                (pageChange)="showAllData($event)" [maxSize]="3" [rotate]="true" [ellipses]="false">
                            </ngb-pagination>

在ts文件中是我的衣服,如下所示。

 showAllData(page: number) {     
            this.myservice.getAlldata(this.showAllUrl, page, this.selectedInputfield).subscribe(response => {
              this.content = response;
              this.pageSize = +response.pager.pageSize
              this.totalCount = response.pager.totalCount;
              if (page == 1  ) {
                this.startIndex =1;
                this.endIndex = page  *  this.pageSize;
              }
              else {
                this.startIndex = (( page - 1 ) * this.pageSize) +  1
                this.endIndex = (this.startIndex -1)  + (this.pageSize);
              }   

            },
            (error) => { 

                }
            )
      }

1 个答案:

答案 0 :(得分:0)

问题是您正在使用pageSize来计算当前显示页面的起始索引:

this.startIndex = (( page - 1 ) * this.pageSize) +  1

,如果您没有固定的最大页面大小(例如,每页最多显示10个项目),则无法计算起始索引。如果您有固定的最大页面大小,则可以这样计算开始索引和结束索引:

this.startIndex = (( page - 1 ) * maxItemsPerPage) +  1
this.endIndex = (this.startIndex -1)  + (this.pageSize);