如何让我的 ngDropdown 菜单在悬停而不是单击时工作?

问题描述 投票:0回答:3

我正在使用带有 Angular Bootstrap 的模板。当我用鼠标悬停在下拉事件上而不是单击它时,我试图调用下拉事件。我该如何调用这个事件?

<div ngbDropdown class="d-inline-block dropdown">
    <a class="navbar-brand" id="dropdownBasic1" href="#basiccomponents" ngbDropdownToggle>Learning</a>
        <div ngbDropdownMenu aria-labelledby="dropdownBasic1" class="dropdown-primary">
            <a class="dropdown-item">Learning Outcomes</a>
                <div class="dropdown-divider"></div>
                <a class="dropdown-item">Learning Plan</a>
        </div>
    </div>
angular bootstrap-4
3个回答
4
投票

在 html 模板中为您的 ngbDropdown 创建一个变量(无论名称是什么):

#drop

指定打字稿类型 ngbDropdown

#drop="ngbDropdown"

ngbDropdown 上的事件 mouseenter 调用该方法:

<li ngbDropdown #drop="ngbDropdown" (mouseenter)='over(drop)'>  

ngbDropdownMenu 上的事件 mouseleave 调用该方法:

<div ngbDropdownMenu (mouseleave)='out(drop)'>
  over(drop:NgbDropdown){
    drop.open()
  }
  out(drop:NgbDropdown){
    drop.close()
  }
    <li class="nav-item" ngbDropdown #drop="ngbDropdown" display="dynamic" placement="bottom-end" (mouseenter)='over(drop)' (mouseleave)='out(drop)'>
      <a class="nav-link" tabindex="0" ngbDropdownToggle id="navbarDropdown3" role="button">
        Dynamic
      </a>
      <div ngbDropdownMenu aria-labelledby="navbarDropdown3" class="dropdown-menu">
        <a ngbDropdownItem href="#" (click)="$event.preventDefault()">Action</a>
        <a ngbDropdownItem href="#" (click)="$event.preventDefault()">Another action</a>
        <a ngbDropdownItem href="#" (click)="$event.preventDefault()">Something else here</a>
      </div>
    </li>

您可以使用 mouseover 代替 mouseenter,但 mouseenter 更好。
您可以使用 mouseout 代替 mouseleave,但 mouseleave 更好。


2
投票

dropdown API 有一个

toggle()
方法,以及显式
open()
close()
。通过绑定到
(mouseenter)
(mouseleave)
事件来在悬停时调用它们。

以下是基础知识,这不是完整的示例。您需要提供下拉菜单的参考。

<div ngbDropdown class="d-inline-block dropdown" (mouseenter)="onHover($event)" (mouseleave)="onHover($event)">
  ...
<div>


onHover(event): void {
  this.myDropDown.toggle();
}


© www.soinside.com 2019 - 2024. All rights reserved.