I have built a sidebar dropdown menu with toggle of sub-menus. In directive, I use @HostBinding to add 'open' to parent li class, and set css of li.open > ul to display:block to show sub-menus. My question is in Angular2, how to remove 'open'of all other li's class when I add 'open' to one specific parent li. Please see some of code below:
app-directive.ts
import { Directive,HostListener,HostBinding} from '@angular/core';
@Directive({selector: '[appNavToggle]'})
export class NavToggleDirective {
@HostBinding('class.open') subMenuOpened:boolean;
@HostListener('click', ['$event'] )
confirmFirst(event: Event) {
this.subMenuOpened = !this.subMenuOpened;
}}
HTML
<li class="nav-item" appNavToggle>
<ul class="sub-menu">
<li class="nav-item">Submenu1</li>
<li class="nav-item">Submenu2</li>
<li class="nav-item">Submenu3</li>
</ul>
</li>
<li class="nav-item" appNavToggle>
<ul class="sub-menu">
<li class="nav-item">Submenu4</li>
<li class="nav-item">Submenu5</li>
<li class="nav-item">Submenu6</li>
</ul>
</li>
CSS
li > ul { display: hide; }
li.open > ul { display: block; }