将变量附加到* ngFor angular 4

时间:2017-09-19 13:42:01

标签: angular variables scope ngfor

如何将局部变量附加到*ngFor循环?

以下工作正常,但如果我的数组<listInstruction>包含多个项目,则循环将生成两个.divTest。这个逻辑是正确的,但<myLocalVariable>中的.divTest是相同的。我希望每个myLocalVariable中有两个不同范围.divTest的变量。

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

我该怎么做?谢谢:))

1 个答案:

答案 0 :(得分:2)

我认为让myLocalVariable实际存储在组件中而不是模板中的最佳做法。

我可能会这样做:

组件:

state;

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

模板:

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