【问题标题】:Angular Material table paginator with undefined resultsLength具有未定义结果长度的角材料表分页器
【发布时间】:2019-06-01 08:34:18
【问题描述】:

我正在使用带有分页功能的 Angular Material 表。

但是,我没有有限长度的表格结果。

这是由于使用了 Firestore,它没有给我计算结果。

我能做的是获取 x 数量的结果,当用户按下下一页按钮时,会加载另一个 x 数量的结果。

但是,为了使用它,我必须像这样将长度传递给分页器:

  <mat-paginator [length]="resultsLength" [pageSize]="eventsPerPage"></mat-paginator>

问题是现在我只能将此长度设置为某个数字,例如 100 以解决我的问题。

简而言之:

  • 我不知道结果的数量。把它想象成一个无限的页表
  • 对服务器的第一个请求可以说返回前 10 个结果
  • 如果我将该 resultLength 分配给分页器,那么我没有选项可以转到下一页,因为分页器认为它已到达末尾?

所以上面的最后一点是我的问题

【问题讨论】:

    标签: angular angular-material google-cloud-firestore


    【解决方案1】:

    当您动态加载记录时,请使用带有结果的 rowcount 属性。将 rowcount 分配给 resultsLength 以加载分页器。使用 mat-paginator 中的 page 事件,以便当用户更改页面时,自动调用此事件并返回下一组结果。每次返回结果时,都会根据 pageSize 更改行数。

    参考这个链接 https://material.angular.io/components/paginator/examples

    【讨论】:

    • 这听起来确实是一个可靠的解决方案。我将继续实施并重新接受答案。感谢您的宝贵时间,欢迎来到 SO
    • pagintor 事件将发出一个包含 pageIndex、每页项目等的对象。使用此参数,您可以加载相关数据。
    • @BearNithi 我确实知道,实际上我订阅了它的更改。
    • 嗯,这不起作用,因为我不知道结果数组的完整长度。当您不知道自己有多少时,想象一下“再加载 10 个”。如果我将结果长度设置为我的第一个 x 结果,这也是我的最后一页。我希望这是有道理的
    • 我已经更新了我的问题@BearNithi 和 Sivaramakrishnan
    猜你喜欢
    • 2020-04-23
    • 2020-04-26
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    相关资源
    最近更新 更多