如何访问ngFor循环中的上一个/后一个元素?

Ray*_*ang 19 angular

<div *ngFor="let item of list">
  <div *ngIf="item == previousItem"></div>
  <div *ngIf="item == firstItem"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我们怎样才能使这类事物发挥作用?也就是说,我们如何访问列表中的其他项目(1)与当前索引相关或(2)绝对索引?

编辑:如果列表是一个Observable怎么办?

<div *ngFor="let item of observable">
  <div *ngIf="item == previousItem"></div>
  <div *ngIf="item == firstItem"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

eko*_*eko 26

您可以充分利用index酒店的财产*ngFor

<div *ngFor="let item of list; let i = index;">
  <div *ngIf="item == list[i-1]"></div>
  <div *ngIf="item == list[0]"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

您可以*ngFor在文档中找到有关本地变量的更多信息:https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html

  • 这不适用于异步管道列表 (5认同)
  • `list [0]`也可以替换为`first`,你可以在模板中定义`first`,如下所示:``div*ngFor ="let list of list; let i = index; let first = first">` :) (3认同)

小智 11

根据接受的答案,我发现这很有用.如果您使用*ngFor进行异步调用,则可以执行以下操作:

<div *ngFor="let item of list | async as items; let i = index;">
  <div *ngIf="items.length > 0 && item === items[i-1]"></div>
  <div *ngIf="item === items[0]"></div>
</div>
Run Code Online (Sandbox Code Playgroud)