簡體   English   中英

angular2-mdl動態下拉菜單

[英]angular2-mdl dynamic drop-down menu

我正在使用angular2開發應用程序。 目前,我正在嘗試找出如何使用angular2-mdl制作動態下拉菜單,但似乎無法找到正確的解決方案。 這是我項目的代碼片段

<nav class="mdl-navigation mdl-layout--large-screen-only">

  <ng-container *ngFor="let link of links; let i = 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>

似乎它沒有按我期望的那樣在菜單的材質設計lite頁面中起作用,當我單擊一個菜單時,另一個菜單關閉。 發生了什么事,我可以打開所有下拉菜單,但是當我嘗試關閉一個菜單時,它們全部都關閉了。 我認為我的問題是<button ... [mdl-toggle-menu]="submenu"><mdl-menu #submenu="mdlMenu" ... >是否可以為它動態設置值?

我嘗試將值更改為<button ... [mdl-toggle-menu]="link.icon"><mdl-menu #{{link.icon}}="mdlMenu" ... >但我得到一個錯誤。 有任何想法嗎?

error_handler.js:54 TypeError: this.menu.toggle is not a function
at MdlToggleMenuDirective.onClick (mdl-toggle-menu.directive.js:11)
at _View_AppComponent3._handle_click_2_2 (component.ngfactory.js:1162)
at view.js:375
at dom_renderer.js:262
at dom_events.js:30
at ZoneDelegate.invoke (zone.js:232)
at Object.onInvoke (ng_zone.js:238)
at ZoneDelegate.invoke (zone.js:231)
at Zone.runGuarded (zone.js:128)
at NgZone.runGuarded (ng_zone.js:133)

編輯

感謝您的模板...這是插件代碼http://plnkr.co/edit/R6Bnadu124qOohjUWuMZ?p=preview

您做對了所有事情。 angular2-mdl中存在一個錯誤:如果打開另一個菜單(剛創建: https : //github.com/mseemann/angular2-mdl/issues/200 ),則打開的菜單不會關閉。

修復此問題之前的解決方法:在每個打開菜單的按鈕上注冊一個click事件監聽器:

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

在您的應用程序組件中查詢所有menuComponents:

@ViewChildren(MdlMenuComponent) private menuComponents: QueryList<MdlMenuComponent>;

並隱藏除將要打開的菜單以外的所有菜單:

  hideAllExcept(submenu) {
   this.menuComponents.forEach( (menu) => {
     if (submenu !== menu) {
       menu.hide();
     }
   });
  }

這是具有解決方法的plnkr: http ://plnkr.co/edit/Yo7F1HKZSmVU309selTc?p=info

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM