Angular 2:将 *ngFor 增加 2 或在分页中实现两个分页

Posted

技术标签:

【中文标题】Angular 2:将 *ngFor 增加 2 或在分页中实现两个分页【英文标题】:Angular 2 : increment *ngFor by 2 or implementing two paginations with in a Pagination 【发布时间】:2017-12-23 22:07:48 【问题描述】:

我对 Angular 很陌生,我想知道是否有任何方法可以将 ngFor 循环增加 2 而不是 1。

我正在尝试在需要将循环增加 2 的分页中实现两个分页。

我正在获取具有 in 对象的对象。假设是用户和他们的地址列表。

(第一个 NgFor 是将用户分页为 2。如果我得到 15 个用户。2 个用户将显示在一个页面中)

li *ngFor="let user of Users | paginate:  itemsPerPage: 1, currentPage: p ;let i = index"
user[i].firstName <--Displaying first userName-->

(第二个 NgFor 是显示第一个用户的地址列表。假设他有 20 个地址。我将把它切成每页 3 或 4 个,然后对其余部分进行分页)

 *ngFor="let address of user[i].address| objectValues |slice:addresspageNumber*2-2:addressPageNumber*5 ; let j = index "
<--First child Pagination code-->

 user[i+1].firstName  <--Displaying second userName-->

(第三个 NgFor 是显示第二个用户的地址列表。假设他有 20 个地址。我将把它切成每页 3 或 4 个,然后对其余部分进行分页)

 *ngFor="let address of user[i+1].address| objectValues |slice:addresspageNumber*2-2:addressPageNumber*5 ; let j = index ">
<th scope="row">address.streetno
<--Second child Pagination code-->

<--Parent Pagination code-->

现在,如果我不将第一个 ngFor 增加 2,则在下一页中将再次显示第二个用户,我不想这样做。

我要么必须增加 2,要么为两个孩子单独实现分页,我不能在一个 for 循环中做到这一点

我想要的是在一个分页中实现两个单独的分页

Object1.name object1.address.street object1.address.pin -- 分页显示其他地址。

Object2.name object2.address.street object2.address.pin -- 第二个分页显示其他地址。 --主分页,点击后将显示另外两个对象详细信息

【问题讨论】:

【参考方案1】:

增加2

<div *ngFor="let item of items; let even = even;">
  <div *ngIf="even">
    // content
  </div>

【讨论】:

【参考方案2】:

我认为您不能将*ngFor 增加 2,因为它的目的是显示数组类型的数据;另外我不太了解您的要求。

但是,您可以将 *ngIf% 运算符结合使用,以免对每个第二个条目做出反应。

这样就可以了

<li *ngFor="let item of items; let i = index">
  <span *ngIf="i % 2 === 0"> // or <ng-template if it is better here>

对于任何迭代大小都可以实现相同的效果。只需将2 替换为例如10 递增 10。

【讨论】:

如果事情变得更复杂,你也可以使用 [ngSwitch。一个例子在这里:angular-2-training-book.rangle.io/handout/directives/… @JGFMK 它在这里没有任何意义......是吗? 不适用于这个特定的用例。但我在想其他人稍后会来线程,有类似的问题,需要3个或更多的变化......也许重新渲染标题,标题+描述, 标题+描述+叙述等... *ngIf="i % 2 === 0 无济于事,因为我想显示该页面中的两条记录。在这种情况下,第二页将不显示任何记录,而第三页将显示两条类似的记录。 我想要的是在一个分页中实现两个单独的分页 Object1.name object1.address.street object1.address.pin -- 分页显示其他地址。 Object2.name object2.address.street object2.address.pin -- 第二个分页显示其他地址。 --主分页,点击后将显示另外两个对象详细信息

以上是关于Angular 2:将 *ngFor 增加 2 或在分页中实现两个分页的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2:ngFor中的复选框默认选中

Angular 2:按需为 ngFor 项目加载单个数据

Angular 2 - ngFor while index < x

Angular 2 - NgFor 中与 NgModel 的 2 路绑定

Angular 2 - NgFor 使用数字而不是集合

从 Angular 2 理解 *ngFor