Получить индекс в для... директивы в Angular 2
На данный момент существует ли способ получить текущий индекс итерации в директиве for..of
в Angular 2? Другими словами, эквивалент $index
в Angular.js v1...
Пример кода:
<ul *for="#task of allTasks">
<li>{{ $index}} - {{ task.label }}</li>
</ul>
(конечно, этот код не работает, он не предоставляет текущий индекс)
Ответы
Ответ 1
<ul>
<template ngFor let-task [ngForOf]="allTasks" let-i="index">
<li>{{ i }} - {{ task.label }}</li>
</template>
</ul>
Но вы должны использовать самую последнюю версию быстрого запуска
BTW - приведенное выше эквивалентно следующему синтаксическому сахару
<li *ngFor="let task of allTasks; let i=index">{{ i }} - {{ task.label }}</li>
Ответ 2
Синтаксис обновлен и теперь (с Angular2.beta13, апрель 2016 года):
<li *ngFor="let item of items; let i = index"></li>
Например:
<li *ngFor="let item of items; let i = index">
item={{item}} index={{i}}
</li>
Ответ 3
Используйте * ngFor, пусть:
<li *ngFor="let menu of tempMenuModel.MenuItems.Items;let i=index" [ngClass]="{'active' : clickedItem == i}" (click)="SelectMenu(menu,i)">
<span>{{menu.Header ==null?menu.Name:menu.Header}}</span>
</li>
компонент:
SelectMenu(menu, $index) {
this.clickedItem = $index;
}
Ответ 4
обновить, использовать let, not #
<div *ngFor="let user of users; let i=index">
{{i}}
</div>