我试图创建一个--看起来很简单--我希望能够创建一个自定义上下文菜单,显示一个"X“,作为页面上某些元素的删除选项。理想情况下,我应该使用一个外部库来实现这个功能,而不是自己编写另一个组件,因为我试图将这个项目压缩到一个组件文件中(因为我没有时间在这个问题上提出来)。
我已经尝试过一个看似完美的库:https://github.com/isaacplmann/ngx-contextmenu,但它没有按预期工作。
菜单看起来很难用,如下所示:

附加到X上的(execute)事件永远不会触发,菜单显然没有按预期显示。如果有人对此不起作用的原因有一些深入了解,这就是我目前正在使用的代码:
菜单附加到的元素:
<div
id="playhead"
(mousedown)="movePlayheadByMouse()"
[contextMenu]="deleteMenu"
>
<span id="playhead-top">⛊</span>
<div id="playhead-line"></div>
</div>菜单本身:
<context-menu #deleteMenu>
<ng-template contextMenuItem (execute)="print('click')">X</ng-template>
</context-menu>print函数(只是控制台的一个日志)
private print(val : string) : void
{
console.log(val)
}这个ngx上下文菜单组件似乎没有太多的支持,所以我有兴趣尝试其他的方法。所以我要问你们的问题是:
( 1)您是否知道有任何其他自定义菜单组件库能够很好地实现此目的?
或
2)您知道如何将角度材质md菜单触发器改为右击而不是左键吗?(在这种情况下,我可以使用角材料的md菜单吗?)
谢谢!拉尔斯
发布于 2017-07-20 19:05:34
使用此代码(execute)="console.log('click')",您的处理程序将无法工作,因为在模板中,只有可用的模板作用域(不是全局作用域,而是console在全局范围内)。
因此,您需要从组件中调用一个函数,如
(execute)="functionFromComponent('click')"
至于角度材料:您可以以这种方式添加手动触发器:
class MyComponent {
@ViewChild(MdMenuTrigger) trigger: MdMenuTrigger;
someMethod() {
this.trigger.openMenu();
}
}然后将someMethod()绑定到一个普通的单击事件(并过滤掉右键单击)
https://stackoverflow.com/questions/45221435
复制相似问题