我来这里是因为经过几个小时的谷歌搜索后,我没有找到一种方法来使用内置指令制作的循环使用替代停止条件:* ngFor。
实际上任何* ngFor都以这种条件完成循环:index < array.length
。我想知道是否有办法用另一个条件结束循环:i < myVariable
。
如果你想知道我为什么要那样做,那是因为我正在以这种方式工作的画廊:
<div *ngFor="let pic of pics; let i = index">
<div *ngIf="whichRowType(i) == 3">
<small>pic[whichIndex(i)].id</small>
<small>pic[currentIndex + 1].id</small>
<small>pic[currentIndex + 2].id</small>
</div>
<div *ngIf="whichRowType(i) == 2">
<small>pic[whichIndex(i)].id</small>
<small>pic[currentIndex + 1].id</small>
</div>
<div *ngIf="whichRowType(i) == 1">
<small>pic[whichIndex(i)].id</small>
</div>
</div>
在这个例子中,我每3个图片创建一行。我有三种类型的行: - 显示一张照片, - 显示两个图片, - 显示三个图片。
问题是,每行的第一张图片的索引总是低于用于显示行的索引。因此,如果我想能够显示我的所有照片,我必须能够改变我的* ngFor的结束条件。
非常感谢你的帮助!
答案 0 :(得分:3)
*ngFor
提供last
值:
<div *ngFor="let pic of pics; let i = index; let last=last">
<div *ngIf="last">
...
</div>
</div>
答案 1 :(得分:1)
我终于解决了我的问题一个丑陋但有效的方法...... 我没有编写另一个结束条件,而是使用由函数计算的长度数组进行循环。我在那个循环中读了我的另一个数组(带有我的照片的那个)。
Angular应该为此做点什么! 谢谢你的帮助!
如何解决它的例子:
<div *ngFor="let galleryIndex of galleryIndexes; let i = index">
<div *ngIf="whichRowType(galleryIndex) == 3">
<small>pics[setCurrentIndex(galleryIndex)].id</small>
<small>pics[currentIndex + 1].id</small>
<small>pics[currentIndex + 2].id</small>
</div>
<div *ngIf="whichRowType(galleryIndex) == 2">
<small>pics[setCurrentIndex(galleryIndex)].id</small>
<small>pics[currentIndex + 1].id</small>
</div>
<div *ngIf="whichRowType(galleryIndex) == 1">
<small>pics[setCurrentIndex(galleryIndex)].id</small>
</div>
</div>