如何限制ngFor重复到Angular中的一些项目?

zer*_*er0 75 angular

我的代码:

<li *ngFor="let item of list; let i=index" class="dropdown-item" (click)="onClick(item)">
  <template [ngIf]="i<11">{{item.text}}</template>
</li>
Run Code Online (Sandbox Code Playgroud)

我试图在任何点上只显示10个列表元素.正如在这里答案中所建议的那样,我使用了ngIf但这导致在页面上显示空列表项(超过10).

Gün*_*uer 209

这对我来说似乎更简单

<li *ngFor="let item of list | slice:0:10; let i=index" class="dropdown-item" (click)="onClick(item)">{{item.text}}</li>
Run Code Online (Sandbox Code Playgroud)

更接近你的方法

<ng-container *ngFor="let item of list" let-i="index">
  <li class="dropdown-item" (click)="onClick(item)" *ngIf="i<11">{{item.text}}</li>
</ng-container>
Run Code Online (Sandbox Code Playgroud)

  • `slice`返回一个副本,不会影响原始数组 (7认同)
  • `| slice:0:10` pipe,很棒,它帮助我构建了一个带有"查看更多"按钮的列表,该按钮增加了`slices`的第二个参数. (5认同)
  • 第二种方法为您提供了更好的UI灵活性.即*ngIf ="i <11 || showAll" (3认同)

Nid*_*eph 18

您可以直接应用于slice()变量。StackBlitz 演示

<li *ngFor="let item of list.slice(0, 10);">
   {{item.text}}
</li>
Run Code Online (Sandbox Code Playgroud)


Man*_*ria 14

例如,假设我们只想显示数组的前 10 项,我们可以使用SlicePipe来做到这一点,如下所示:

<ul>
     <li *ngFor="let item of items | slice:0:10">
      {{ item }}
     </li>
</ul>
Run Code Online (Sandbox Code Playgroud)


Viv*_*mar 11

*ngFor您可以通过应用三元运算符来动态限制。

示例 1 -

<div *ngFor="let item of (showAllFlag ? list : list.slice(0,2))" >
</div>
Run Code Online (Sandbox Code Playgroud)


小智 6

这非常有效:

<template *ngFor="let item of items; let i=index" >
 <ion-slide *ngIf="i<5" >
  <img [src]="item.ItemPic">
 </ion-slide>
</template>
Run Code Online (Sandbox Code Playgroud)