我想在Angular 2中實現2級導航,其中第一級像accordeon一樣工作。如果您點擊第一級,則會顯示子元素。這是通過簡單地將css類open
添加到父元素li
來完成的。所有這些都是由2 ngFor循環動態生成的。Angular2:ngFor和條件類
這裏是我現在:
<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>
的問題是,我得到一個「例外:不能分配給一個或引用變量」錯誤(click)="isOpen = !isOpen"
部分。
我該如何解決這個問題?
解決方案感謝PierreDuc
最簡單的方法是將屬性添加到名爲isOpen
的sidebaritem
類,只是操縱這個屬性:
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>
(點擊)需要引用的函數在你的.ts。 –