【发布时间】:2017-08-16 02:53:48
【问题描述】:
实际行为
当我点击任何子菜单时,所有子菜单都会改变颜色。
期望的行为
当单击子菜单 1 时,仅应更改颜色,单击子菜单 2 时,仅应更改颜色,子菜单 1(以及任何其他不是子菜单 2 的子菜单,甚至任何其他主菜单中的子菜单)都应返回到它原色。
以下是我所拥有的;
<nav class="navigation">
<ul class="mainmenu">
<li class="dropdown-content" (click)="onClickHome()"><a href='javascript:void(0)'>Home</a>
</li>
<li [class]="hideUsability" *ngFor="let menu of entities">
<a [ngClass]="{'entities-list__title--active' : menu.isOpen}" (click)="onClickMenu(menu)">{{menu.entity_name}}</a>
<ul class="dropdown-content" >
<li [ngClass]="{'btn-add': !menu.isOpen, 'btn-remove': menu.isOpen}" [hidden]="!menu.isOpen" (click)="onClickSubmenu(value.value_id)" *ngFor="let value of menu.values"><a href='javascript:void(0)'>{{value.value_name}}</a></li>
</ul>
</li>
</ul>
</nav>
组件(Angular 2)
onClickHome(){
this.closeAllMenus();
this.router.navigate(['welcome'], { skipLocationChange: true});
}
onClickMenu(menu){
if (!menu.isOpen){
this.closeAllMenus();
}
menu.isOpen = !menu.isOpen;
}
onClickSubmenu(value_id: number){
if(value_id == 2){
this.router.navigate(['welcome/metrics.html'], { skipLocationChange: true});
} else{
this.router.navigate(['welcome/extractor.html'], { skipLocationChange: true});
}
}
closeAllMenus(){
this.entities.forEach((menu) =>{
menu.isOpen = false;
});
}
CSS:
.btn-add {
background-color: red;
}
.btn-remove {
background-color: green;
}
【问题讨论】: