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