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
有趣的是,上面的每个
模板变量都是唯一的,成功地从#菜单
模板变量中分离出来,这些模板变量是由#菜单
循环创建的。Vijay,你有成功的方法吗?我正在做一个项目,我将面临类似的情况(事实上,我刚刚在这里发布了一个问题)。我的想法是:将触发器和md菜单封装在组件中(模板引用变量是组件范围的,因此不会有冲突),并使用单向数据绑定将必要的参数传递给该组件。在巴西时间有点晚,但我打算明天试试。它奏效了,维杰。看看我对自己问题的回答:谢谢jpavel。我可以确认这种方法对我有效。即使使用材料2.0.0-beta.12,我们也无法将[matMenuTriggerFor]-之前的[mdMenuTriggerFor]与matMenu的动态参考关联。像你建议的那样封装触发器和mat菜单就可以了。Vlay,我在下面的回答中建议了另一种方法。*ngFor
... // 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>