angular - 带有嵌套下拉选项(如 angular1)的 Material 设计 angular2/4 菜单的示例是什么?

标签 angular angular-material2 megamenu

我真的很想合并 angular2 Material ,注意到下面的菜单示例:

https://material.angularjs.org/1.1.4/demo/menuBar

这是一个美女:http://codepen.io/anon/pen/zrdQwP

我喜欢嵌套菜单的方式,但对于 Angular 2/4 演示,您所看到的是:

https://material.angular.io/components/component/menu

没有嵌套菜单的例子! Angular2 + Material 这可能吗?如果是这样,有人可以演示如何使用它吗?或者这是不可能的?如果 Angular 2/4 不支持这一点而 Angular 1.x 可以……,这似乎有点可疑……

最佳答案

更新:

此功能已添加到 2.0.0-beta.10 découpage-panjandrum

Example

上一版本:

future 有计划https://github.com/angular/material2/issues/1429

但现在我怀疑这是可能的。这是我的 Plunker Material2 Menu Example 演示这样的菜单

enter image description here 模板可能如下所示:

<ng-container *ngFor="let item of items">
  <button md-button [mdMenuTriggerFor]="menu" #trigger="mdMenuTrigger" [attr.data-level]="1" (mouseenter)="openMenu(trigger, 1)">
    {{item.text}}
  </button>
  <md-menu class="custom-menu" #menu="mdMenu" [overlapTrigger]="false" (close)="closeMenu()" xPosition="after">
    <ng-container *ngTemplateOutlet="subMenu; context: { $implicit: item.items, level: 2 }"></ng-container>
  </md-menu>
</ng-container>

<ng-template #subMenu let-items let-level="level">
  <ng-container *ngFor="let item of items">
    <ng-container *ngIf="item.items && item.items.length else simpleTmpl">
      <button *ngIf="!item.divider" md-menu-item [disabled]="item.disabled"
              [mdMenuTriggerFor]="menu"
              #trigger="mdMenuTrigger"
              [attr.data-level]="level"
              (mouseenter)="openMenu(trigger, level);" (click)="$event.stopPropagation()">
        <span>{{item.text}}</span>
        <span *ngIf="item.extraText">{{item.extraText}}</span>
        <md-icon *ngIf="item.icon">{{item.icon}}</md-icon>
      </button>
      <md-menu class="sub-menu" #menu="mdMenu" [overlapTrigger]="false" xPosition="before" >
        <ng-container *ngTemplateOutlet="subMenu; context: { $implicit: item.items || [], level: level + 1 }"></ng-container>
      </md-menu>
      <md-divider *ngIf="item.divider" class="mat-divider"></md-divider>
    </ng-container>
    <ng-template #simpleTmpl>
      <button *ngIf="!item.divider" md-menu-item [disabled]="item.disabled" (click)="closeMenu()">
        <span>{{item.text}}</span>
        <span *ngIf="item.extraText">{{item.extraText}}</span>
      </button>
      <md-divider *ngIf="item.divider" class="mat-divider"></md-divider>
    </ng-template>
  </ng-container>
</ng-template>

你只需要声明项目定义:

menuItems = [
  {
    text: 'File',
    items: [
      {
        text: 'Share'
      },
      {
        text: 'New',
        icon: 'arrow_right',
        items: [
          {
            text: 'Document'
          },
          {
            text: 'Form'
          }
        ]
      },
      {
        text: 'Print',
        extraText: 'Ctrl+P'
      }
    ]
  },
  {
    text: 'Edit',
  }
];

关于angular - 带有嵌套下拉选项(如 angular1)的 Material 设计 angular2/4 菜单的示例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43883400/

相关文章:

html - 从 angular 4 中的 html 中删除主机组件标签

Javascript 日期显示前一天

angular - 错误 : cdk-table: Could not find column with id. Angular 2 Material 数据表

javascript - 链接悬停时 Mega 菜单中的闪烁/闪烁

javascript - 网站速度真的很慢,不知道是什么减慢了速度

Angular 7 - 虚拟滚动与异步订阅相结合

javascript - Angular - 如何删除所有其他现有指令?

css - 如何自定义 Angular Material Input 中的样式?

angular - 如何清除焦点 Angular 占位符

jquery - Mega Nav 适用于除以下 IE8 以外的任何浏览器。