首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >角自定义上下文菜单

角自定义上下文菜单
EN

Stack Overflow用户
提问于 2017-07-20 17:28:48
回答 1查看 4.2K关注 0票数 0

我试图创建一个--看起来很简单--我希望能够创建一个自定义上下文菜单,显示一个"X“,作为页面上某些元素的删除选项。理想情况下,我应该使用一个外部库来实现这个功能,而不是自己编写另一个组件,因为我试图将这个项目压缩到一个组件文件中(因为我没有时间在这个问题上提出来)。

我已经尝试过一个看似完美的库:https://github.com/isaacplmann/ngx-contextmenu,但它没有按预期工作。

菜单看起来很难用,如下所示:

附加到X上的(execute)事件永远不会触发,菜单显然没有按预期显示。如果有人对此不起作用的原因有一些深入了解,这就是我目前正在使用的代码:

菜单附加到的元素:

代码语言:javascript
复制
<div 
    id="playhead"
    (mousedown)="movePlayheadByMouse()"
    [contextMenu]="deleteMenu"
>
     <span id="playhead-top">&#9930;</span>
     <div id="playhead-line"></div>
</div>

菜单本身:

代码语言:javascript
复制
<context-menu #deleteMenu>
    <ng-template contextMenuItem (execute)="print('click')">X</ng-template>
</context-menu>

print函数(只是控制台的一个日志)

代码语言:javascript
复制
private print(val : string) : void
{
  console.log(val)
}

这个ngx上下文菜单组件似乎没有太多的支持,所以我有兴趣尝试其他的方法。所以我要问你们的问题是:

( 1)您是否知道有任何其他自定义菜单组件库能够很好地实现此目的?

2)您知道如何将角度材质md菜单触发器改为右击而不是左键吗?(在这种情况下,我可以使用角材料的md菜单吗?)

谢谢!拉尔斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-20 19:05:34

使用此代码(execute)="console.log('click')",您的处理程序将无法工作,因为在模板中,只有可用的模板作用域(不是全局作用域,而是console在全局范围内)。

因此,您需要从组件中调用一个函数,如

(execute)="functionFromComponent('click')"

至于角度材料:您可以以这种方式添加手动触发器:

代码语言:javascript
复制
class MyComponent {
  @ViewChild(MdMenuTrigger) trigger: MdMenuTrigger;

  someMethod() {
    this.trigger.openMenu();
  }
}

然后将someMethod()绑定到一个普通的单击事件(并过滤掉右键单击)

另见:https://material.angular.io/components/menu/overview

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45221435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档