angular - angular2-mdl dynamic drop-down menu -


i developing application using angular2. trying find out how make dynamic drop-down menu using angular2-mdl can't seem find correct solution it. here code snippet project

<nav class="mdl-navigation mdl-layout--large-screen-only">    <ng-container *ngfor="let link of links; let = index">      <ng-container *ngif="!link.hassublinks()">        <button mdl-button class="mdl-navigation__link" (click)="route(link.url)" [routerlink]="link.url" routerlinkactive="active">         {{link.name}}       </button>      </ng-container>      <ng-container *ngif="link.hassublinks()">        <button mdl-button class="mdl-navigation__link" #{{link.name}}="mdlbutton" [mdl-toggle-menu]="submenu">         {{link.name}}       </button>        <mdl-menu #submenu="mdlmenu" mdl-menu-position="bottom-right" class="mdl-color--blue-grey-800">          <mdl-menu-item *ngfor="let sublink of link.sublinks">           <a class="mdl-navigation__link" [routerlink]="sublink.url" routerlinkactive="active">          <mdl-icon mdl-list-item-icon [mdl-badge]="sublink.badge>0?sublink.badge:null" mdl-badge-overlap role="presentation" class="colorwhite">{{sublink.icon}}</mdl-icon>{{sublink.name}}            </a>          </mdl-menu-item>        </mdl-menu>      </ng-container>    </ng-container>  </nav> 

it seems not working way expect in material design lite page regarding menu, when click 1 menu other closes. happens can open drop-down menus when try close one, of them close. think problem <button ... [mdl-toggle-menu]="submenu"> , <mdl-menu #submenu="mdlmenu" ... > there way dynamically set values it?

i tried changing values <button ... [mdl-toggle-menu]="link.icon"> , <mdl-menu #{{link.icon}}="mdlmenu" ... > error. ideas?

error_handler.js:54 typeerror: this.menu.toggle not function @ mdltogglemenudirective.onclick (mdl-toggle-menu.directive.js:11) @ _view_appcomponent3._handle_click_2_2 (component.ngfactory.js:1162) @ view.js:375 @ dom_renderer.js:262 @ dom_events.js:30 @ zonedelegate.invoke (zone.js:232) @ object.oninvoke (ng_zone.js:238) @ zonedelegate.invoke (zone.js:231) @ zone.runguarded (zone.js:128) @ ngzone.runguarded (ng_zone.js:133) 

edit

thanks template... here plunker code http://plnkr.co/edit/r6bnadu124qoohjuwumz?p=preview

you doing right. there bug in angular2-mdl: open menu not closed if menu opened (just created: https://github.com/mseemann/angular2-mdl/issues/200).

the workaround until fixed: register click event listener on every button opens menu:

<button mdl-button (click)="hideallexcept(submenu)" class="mdl-navigation__link" #{{link.name}}="mdlbutton"  [mdl-toggle-menu]="submenu">{{link.name}}</button> 

query in app component menucomponents:

@viewchildren(mdlmenucomponent) private menucomponents: querylist<mdlmenucomponent>; 

and hide menus except 1 opened:

  hideallexcept(submenu) {    this.menucomponents.foreach( (menu) => {      if (submenu !== menu) {        menu.hide();      }    });   } 

here plnkr workaround: http://plnkr.co/edit/yo7f1hkzsmvu309seltc?p=info


Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -