2017-09-19 2 views
0

Comment attacher une variable locale à une boucle *ngFor?Attacher une variable à * ngFor angular 4

Ce qui suit fonctionne, mais si mon tableau <listInstruction> a plus de 1 élément, la boucle va générer deux .divTest. Eh bien c'est logique, mais <myLocalVariable> est la même dans les deux .divTest. Je veux deux variables différentes portée myLocalVariable dans chaque .divTest.

<div *ngFor="let instruction of listInstruction; let i = index; let myLocalVariable=false"> 
    <div class="divTest" (click)="myLocalVariable=!myLocalVariable">Click here</div> 
</div> 

Comment puis-je faire cela? Merci :)

+0

Pouvez-vous dire où myLocalVarible va venir? et à quoi servira-t-il? Est-ce que ça va toujours commencer comme faux? Vous allez mettre à jour un autre élément basé sur si c'est vrai ou faux? – bgraham

+0

myLocalVarible est venu de nulle part. J'en ai juste besoin dans ma boucle. C'est pourquoi j'essaye de créer une variable sur chaque itération de boucle; sans succès ... –

Répondre

1

Je pense qu'il est préférable d'avoir myLocalVariable réellement stocké dans le composant, pas dans le modèle.

je ferais probablement quelque chose comme ceci:

Composant:

state; 

ngOnInit() { 
    state = { myLocalVariables: [] }; 
    for(var i = 0; i < listInstruction.length; i++){ 
    state.myLocalVariables.push(false); 
    } 
} 

Modèle:

<div *ngFor="let instruction of listInstruction; let i = index;"> 
    <div class="divTest"  (click)="state.myLocalVariables[i]=!state.myLocalVariables[i]">Click here</div> 
</div> 
+0

Oui, bonne idée, pas ce que je pensais au départ, mais ça devrait marcher super bien;). Merci –