Angular ng2分页未触发页面更改

Angular ng2分页未触发页面更改,angular,pagination,Angular,Pagination,因此,我开始使用Angular2,并尝试通过ng2分页组件添加分页,经过多次尝试和错误后,我已经达到了数据正确显示的阶段,分页控件正确显示,但页面更改没有触发,因此我始终停留在第一页 这是我的html <div id="item_box" *ngFor="let item of listItems | paginate: {itemsPerPage: 3, currentPage: page};"> <! -- Elemen

因此,我开始使用Angular2,并尝试通过ng2分页组件添加分页,经过多次尝试和错误后,我已经达到了数据正确显示的阶段,分页控件正确显示,但页面更改没有触发,因此我始终停留在第一页

这是我的html

  <div id="item_box" *ngFor="let item of listItems | paginate: 
           {itemsPerPage: 3, currentPage: page};">
             <! -- Elements to display my data items, all works OK -->
  </div>

    <div id="pager" class="pagination">
       <pagination-template #p="paginationApi" (pageChange)="pageChange.emit($event)">

       <ul>
          <li [class.disabled]="p.isFirstPage()">
               <a (click)="p.setCurrent(1)">First</a>
           </li>
           <li [class.disabled]="p.isFirstPage()">
               <a (click)="p.previous()">Previous</a>
            </li>


            <li *ngFor="let page of p.pages" [class.current]="p.getCurrent() === page.value">
                <a (click)="p.setCurrent(page.value)">{{page.value}}</a>
             </li>
             <li [class.disabled]="p.isLastPage()">
                 <a (click)="p.next()">Next</a>
             </li>
             <li [class.disabled]="p.isLastPage()">
                  <a (click)="p.getLastPage()">Last</a>
              </li>
         </ul>
    </pagination-template>
</div>

    不帮助,我发现的任何其他例子也没有帮助


    有什么想法吗?我做错了什么?

    你能检查一下项目清单吗? (例如,如果您有9个项目,而itemsPerPage=10),那么它肯定什么也做不了:)
    请验证发送到服务器的请求

    ,以便在多个小时后我已设法解决该问题

    我无法让它与发射器一起工作,但在我的html中我改变了这一点

    <pagination-template #p="paginationApi" (pageChange)="pageChange.emit($event)">
    
    然后我发现变量
    page
    没有初始化,所以我在构造函数中添加了这个

    this.page = 1;
    
    我不确定为什么发射器不能工作,因为我缺乏角度测量的经验,所以我无法找到这个,但现在这个对我来说很有效


    一个好的工作解决方案的证明是,我能够将分页添加到另一个组件中,并且它第一次工作时没有任何问题

    不,这不是问题所在。我在不同的列表中尝试了不同数量的项目,为了测试,我将每页的项目数量限制为3个。尽管有超过20个项目,我还是有这个问题。分页中显示的页数根据我拥有的项目数是正确的(并且每个列表的页数正确不同)。我使用的是同一个库,它工作正常。但是,我使用http与服务器通信。请求包含(itemsPerPage和currentPage),响应包含(服务器中的totalItems和链接到此页面的items),在您的情况下,items是静态的,因此每个请求只需要第一个items。我不确定分页是否适用于静态的items列表(因为其背后的思想是获得分段的完整列表)这些项不是静态的,它们是通过Web服务检索的(为了简洁起见,请参见//代码删除)。但我不做服务器分页。整个列表被检索并存储在listItemsOk中。在官方文档中:totalItems[编号]集合中的项目总数。仅在执行服务器端分页时有用,其中集合大小限制为服务器API返回的单个页面。对于内存内分页,不应设置此属性,因为它将自动设置为collection.length的值。所以试着删除“totalItems”:)嗨。我是自由党的作者。问题:在PaginatePipe中,您设置了
    currentPage:page
    ——我在代码中没有看到“page”变量。它是作为输入传入的吗?目前,您的代码似乎只是重新发出pageChange事件,但我看不到任何部分会实际更改“page”的值,这必须发生才能使分页正常工作。嗨,Michael,是的,我在课堂上看到过它,但在上面的代码中没有看到(复制过去的问题)。但这为我指明了正确的方向,我已经解决了这个问题。见下面我贴的答案
    <pagination-template #p="paginationApi" (pageChange)="onPageChange($event)">
    
      onPageChange(e)
      {
        if (e)
          this.page = e;
      }
    
    this.page = 1;