Ich versuche eine 2-Level-Navigation in Angular 2 zu implementieren, wo die erste Ebene wie ein Akkordeon funktioniert. Wenn Sie auf die erste Ebene klicken, werden die untergeordneten Elemente angezeigt. Dies geschieht, indem einfach die css-Klasse open
zum übergeordneten Element li
hinzugefügt wird. Und all das wird dynamisch generiert durch 2 ngFor-Schleifen. HierAngular2: ngFor und bedingte Klasse
ist das, was ich habe jetzt:
<ul>
<li *ngFor="let row of sidebaritem; let isOpen = false;" [class.open]="isOpen">
<a (click)="isOpen = !isOpen">{{row.title}}</a>
<ul>
<li *ngFor="let child of row.children">
<a [routerLink]="child.route">{{child.name}}</a>
</li>
</ul>
</li>
</ul>
Das Problem ist, dass ich eine bekommen „AUSNAHME: nicht zu einer Referenz oder Variablen zuweisen kann“ Fehler auf dem (click)="isOpen = !isOpen"
Teil.
Wie kann ich das beheben?
LÖSUNG DANK PierreDuc
Der einfachste Weg ist es, eine Eigenschaft auf die sidebaritem
Klasse isOpen
genannt hinzuzufügen und zu bearbeiten gerade diese Eigenschaft:
class SidebarnaviItem {
isOpen: boolean = false;
constructor(public name?: string, public route?: any, public children?: SidebarnaviItem[]) {}
}
<ul>
<li *ngFor="let row of sidebaritem;" [class.open]="row.isOpen">
<a (click)="row.isOpen = !row.isOpen">{{row.title}}</a>
<ul>
<li *ngFor="let child of row.children">
<a [routerLink]="child.route">{{child.name}}</a>
</li>
</ul>
</li>
</ul>
(klicken) muss auf eine Funktion in Ihrem .ts verweisen. –