我试图在用户右键单击报警列表中的项目时显示上下文菜单。问题是我需要使用指令mdMenuTriggerFor
才能从组件中调用openMenu()
。但是这个指令是用来左键单击的,所以菜单总是显示出来(右键点击&)。另外,右键单击时,菜单显示在列表顶部。使用Angular Material 2菜单作为列表项上的上下文菜单
我的代码如下所示:
<div class="list">
<div *ngFor="let alarm of (_alarms | alarmsFilter:search.value)">
<alarm-item [alarm]="alarm" (onClick)="onSelection(alarm)" (contextmenu)="onContextMenu($event, alarm)" [mdMenuTriggerFor]="appMenu"></alarm-item>
</div>
</div>
<md-menu #appMenu="mdMenu">
<!-- Menu content -->
</md-menu>
而且我的组件打字稿文件看起来像这样:
@Component({
selector: // My selector
templateUrl: // My template URL
})
export class AlarmComponent {
@Input() alarm;
@ViewChild(MdMenuTrigger) trigger: MdMenuTrigger;
// ...
private onContextMenu($event: Event, alarm: Alarm): void {
this.trigger.openMenu();
$event.preventDefault();
}
有什么建议?