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
Post a Comment