J'ai une simple boucle ngFor
qui garde également une trace du index
actuel. Je veux stocker cette valeur index
dans un attribut pour que je puisse l’imprimer. Mais je n'arrive pas à comprendre comment cela fonctionne.
J'ai essentiellement ceci:
<ul *ngFor="#item of items; #i = index" data-index="#i">
<li>{{item}}</li>
</ul>
Je veux stocker la valeur de #i
dans l'attribut data-index
. J'ai essayé plusieurs méthodes mais aucune d'entre elles n'a fonctionné.
J'ai une démo ici: http://plnkr.co/edit/EXpOKAEIFlI9QwuRcZqp?p=preview
Comment enregistrer la valeur index
dans l'attribut data-index
?
J'utiliserais cette syntaxe pour définir la valeur d'index dans un attribut de l'élément HTML:
Vous devez utiliser let
pour déclarer la valeur plutôt que #
.
<ul>
<li *ngFor="let item of items; let i = index" [attr.data-index]="i">
{{item}}
</li>
</ul>
<ul>
<li *ngFor="#item of items; #i = index" [attr.data-index]="i">
{{item}}
</li>
</ul>
Voici le fichier mis à jour: http://plnkr.co/edit/LiCeyKGUapS5JKkRWnUJ?p=preview .
Dans Angular 5/6/7/8:
<ul>
<li *ngFor="let item of items; index as i">
{{i+1}} {{item}}
</li>
</ul>
Dans les anciennes versions
<ul *ngFor="let item of items; index as i">
<li>{{i+1}} {{item}}</li>
</ul>
Angular.io ▸ API ▸ NgForOf
Exemples de tests unitaires
Un autre exemple intéressant
Juste une mise à jour, la réponse de Thierry est toujours correcte, mais Angular2 a fait l’objet d’une mise à jour concernant:
<ul *ngFor="let item of items; let i = index" [attr.data-index]="i">
<li>{{item}}</li>
</ul>
Le #i = index
devrait maintenant être let i = index
EDIT/UPDATE:
Le *ngFor
devrait figurer sur l'élément que vous souhaitez éviter, ainsi pour cet exemple, il devrait être:
<ul>
<li *ngFor="let item of items; let i = index" [attr.data-index]="i">{{item}}</li>
</ul>
EDIT/UPDATE
Angulaire 5
<ul>
<li *ngFor="let item of items; index as i" [attr.data-index]="i">{{item}}</li>
</ul>
EDIIT/UPDATE
Angulaire 7/8
<ul *ngFor="let item of items; index as i">
<li [attr.data-index]="i">{{item}}</li>
</ul>
Je pense qu'il a déjà été répondu auparavant, mais juste une correction si vous remplissez une liste non ordonnée, le *ngFor
viendra dans l'élément que vous voulez répéter. Donc, il devrait être insdide <li>
. De plus, Angular2 utilise maintenant let pour déclarer une variable.
<ul>
<li *ngFor="let item of items; let i = index" [attr.data-index]="i">
{{item}}
</li>
</ul>
Les autres réponses sont correctes mais vous pouvez omettre complètement le [attr.data-index]
et simplement utiliser
<ul>
<li *ngFor="let item of items; let i = index">{{i + 1}}</li>
</ul
Essaye ça
<div *ngFor="let piece of allPieces; let i=index">
{{i}} // this will give index
</div>