Why does it work with AngularJS (1.x)?
ng-repeatcreate a new area for each iterated element, so the property isFlippedis set in the area of repeating elements (unique to each element):
ngRepeat . , , $index - .
Angular (2+)?
Angular , , isFlipped, , -, .
card :
, , isFlipped card, , . , , card elements, AOT .
/, . " - (...)".
:
, currentCard :
:
export class MyComponent{
currentCard:Card;
}
:
<div class="card" *ngFor="let card of cards">
<div class="flipcard" [ngClass]="{'flipped': card===currentCard }" (click)="currentCard = card">
</div>
</div>
, card .
, flipped/not flipped , , card
:
export class MyComponent{
cards: Card=[];
private flipped: boolean[];
flip(index:number){
this.flipped[index]=!this.flipped[index]
}
}
:
<div class="card" *ngFor="let card of cards: let i= index">
<div class="flipcard" [ngClass]="{'flipped': flipped[i] }" (click)="flip(i)">
</div>
</div>