我想在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。 –