Bootstrap下拉列表作为Angular 4应用程序

时间:2017-10-28 09:05:37

标签: angular contextmenu bootstrap-4

有没有一种简单的方法可以在不使用ngx-bootstrap库的情况下在Angular 4应用程序中的contextmenu事件上切换Bootstrap 4下拉菜单?

Bootstrap文档说您可以通过调用以下方法从JavaScript切换下拉列表:

$('.dropdown-toggle').dropdown()

所以我尝试在contextmenu事件处理程序中执行它,但它不起作用。我总是得到一个错误说:

  

...下拉列表不是函数

我还尝试直接在 @ViewChild() ElementRef 的原生元素上调用 dropdown()函数但是我得到了同样的错误。

问题出在哪里?我可以通过使用数据属性来切换下拉列表(所以我假设Bootstrap脚本在这里工作)但是不可能以这种方式在上下文中切换它,或者是它?

我更喜欢没有任何外部库的解决方案。

3 个答案:

答案 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。