Angular2获取对ngFor中创建的材质MdMenu的引用

Angular2获取对ngFor中创建的材质MdMenu的引用,angular,angular-material,Angular,Angular Material,我正在努力实现的目标 我正在尝试动态创建一个包含角度和材质组件的两级级联菜单 第一级由md nav列表和一组 md列出包含使用ngFor创建的按钮的项目 第二级菜单是带有按钮的md菜单。md菜单按钮是使用嵌套 现在,我想在悬停在第一级元素上时触发第二级菜单 。。。 //一级菜单 这里有一种方法:您可以使用,它只会为您的模板变量()创建一个私有范围: 菜单{{el}的文本行 更多 菜单{{el}}:项目1 菜单{{el}}:项目2 有趣的是,上面的每个#菜单模板变量都是唯一的,成功地从#

我正在努力实现的目标

我正在尝试动态创建一个包含角度和材质组件的两级级联菜单

  • 第一级由md nav列表和一组
    md列出包含使用ngFor创建的按钮的项目
  • 第二级菜单是带有按钮的md菜单。md菜单按钮是使用嵌套
  • 现在,我想在悬停在第一级元素上时触发第二级菜单

    。。。
    //一级菜单
    
    这里有一种方法:您可以使用
    ,它只会为您的模板变量()创建一个私有范围:

    
    菜单{{el}的文本行
    更多
    菜单{{el}}:项目1
    菜单{{el}}:项目2
    

    有趣的是,上面的每个
    #菜单
    模板变量都是唯一的,成功地从
    #菜单
    模板变量中分离出来,这些模板变量是由
    *ngFor
    循环创建的。

    Vijay,你有成功的方法吗?我正在做一个项目,我将面临类似的情况(事实上,我刚刚在这里发布了一个问题)。我的想法是:将触发器和md菜单封装在组件中(模板引用变量是组件范围的,因此不会有冲突),并使用单向数据绑定将必要的参数传递给该组件。在巴西时间有点晚,但我打算明天试试。它奏效了,维杰。看看我对自己问题的回答:谢谢jpavel。我可以确认这种方法对我有效。即使使用材料2.0.0-beta.12,我们也无法将[matMenuTriggerFor]-之前的[mdMenuTriggerFor]与matMenu的动态参考关联。像你建议的那样封装触发器和mat菜单就可以了。Vlay,我在下面的回答中建议了另一种方法。
      ...
    
      // Level 1 Menu
      <button class="cq-but" md-menu-item *ngIf="item.type === 'sub'"
        [mdMenuTriggerFor]= ... // <- how do I reference mdMenu here??
         item.name
      </button>
    
      // Level 2 Menu
      <md-menu class="cq-popup" *ngIf="item.type === 'sub'" #subMenu="mdMenu" id=item.name>
        <button md-menu-item *ngFor="let childitem of item.children">
            childitem.name
        </button>
      </md-menu>
    
    
    </md-list-item>
    
    // @ViewChildren('subMenu') public subMenu:QueryList<MdMenu>;
    
    <table class="table table-striped">
      <ng-container *ngFor="let el of [1,2,3,4,5]">
        <tr>
          <td>Text line of menu {{el}}</td>
          <td style="width: 5%">
            <button mat-icon-button [matMenuTriggerFor]="menu">
              <mat-icon>more_vert</md-icon>
            </button>
            <mat-menu #menu="matMenu">
              <button mat-menu-item (click)="clickHandler('Item 1 of Menu ' + el)">Menu {{el}}:Item 1</button>
              <button mat-menu-item (click)="clickHandler('Item 2 of Menu ' + el)">Menu {{el}}:Item 2</button>
            </mat-menu>
          </td>
        </tr>
      </ng-container>
    </table>