有没有一种简单的方法可以在不使用ngx-bootstrap库的情况下在Angular 4应用程序中的contextmenu事件上切换Bootstrap 4下拉菜单?
Bootstrap文档说您可以通过调用以下方法从JavaScript切换下拉列表:
$('.dropdown-toggle').dropdown()
所以我尝试在contextmenu事件处理程序中执行它,但它不起作用。我总是得到一个错误说:
...下拉列表不是函数
我还尝试直接在 @ViewChild()的 ElementRef 的原生元素上调用 dropdown()函数但是我得到了同样的错误。
问题出在哪里?我可以通过使用数据属性来切换下拉列表(所以我假设Bootstrap脚本在这里工作)但是不可能以这种方式在上下文中切换它,或者是它?
我更喜欢没有任何外部库的解决方案。
答案 0 :(得分:0)
你想要实现的目标可能过于复杂,无法切换下拉列表,更容易:
为什么不添加[class.hidden] =" menuClosed"喜欢:
<div [class.hidden]="menuClosed" class="dropdown">
?
只需在切换功能中将menuClosed变量设置为true或false,即可完成工作。
编辑:Angular 2+的酷炫之处在于你可以通过使用这种显示规则快速重现jQuery / Javascript行为答案 1 :(得分:0)
我终于意识到只显示Bootstrap下拉菜单是不够的,我还想将上下文菜单放在我点击的位置,但不想自己实现。
这就是我决定使用ngx-contextmenu的原因,尽管我之前提到过我不想使用任何外部库。它很容易设置,也可以使用Bootstrap下拉样式,这是我想要首先完成的。
如果有人想使用这个库,请注意this bug目前默认情况下没有显示上下文菜单的情况。
答案 2 :(得分:0)
您不能在 ElementRef 上调用下拉方法。
您需要在 ViewChild 选项中将其转换为 NgbDropdown(支持 ngVersion 的 idk...):
@ViewChild('ngbDropdownTemplateVarName', {read: NgbDropdown})
然后您可以将其用作下拉列表,而不是仅提供 HTML 项的 ElementRef。