如何将数量限制应用于*ngFor?

Hos*_*rad 55 javascript angular

由于限制过滤器已从Angular 2+中删除,如何对简单的*ngFor语句应用限制?

<div *ngFor="#tweet of singleCategory">
  {{ tweet }}
</div>
Run Code Online (Sandbox Code Playgroud)

我不希望*ngFor语句循环遍历singleCategory的所有元素,我想将其限制为仅2个结果.我相信可以使用Custom Pipes完成,但我不知道如何实现它.

谢谢.

sqw*_*qwk 85

您可以使用索引在元素上应用ngIf:

<div *ngFor=" let tweet of singleCategory;  let i=index">
    <div *ngIf="i<2">
        {{tweet}}
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果您不想要包装div,请查看模板语法:

<ng-template ngFor let-tweet [ngForOf]="singleCategory" let-i="index">
    <div [ngIf]="i<2">
        {{tweet}}
    </div>
</ng-template>
Run Code Online (Sandbox Code Playgroud)

首先,您可以首先使用过滤器过滤组件中的元素,以防止在显示数据时出现不必要的循环:

public get singleCategory() {
   return this.categories.filter((item, index) => index > 2 )
}
Run Code Online (Sandbox Code Playgroud)

还可以选择创建管道.(见链接副本)

  • 还有一个选项:`<div*ngFor ="let item of(model?model.slice(0,2):[])">` (64认同)
  • 现在在Angular4 +`<template>`已被弃用.使用`<ng-template>`甚至`<ng-container>`. (12认同)
  • 我喜欢这个解决方案:/sf/ask/2647307421/ (5认同)
  • 截至今天,模板语法[已弃用](https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28),你应该使用`let tweet`代替#tweet` (4认同)
  • 我发现@georgeos提供了最佳解决方案 (2认同)