一次在 mouseenter 事件上显示一个 Popover(Angular,ngBootstrap)
Show one Popover on mouseenter event at a time (Angular, ngBootstrap)
我动态生成了 divs。在那些 div 上,我有 ngPopovers。在 ngPopover 中,我有按钮,我想点击按钮按钮。所以我像这样触发了 ng popover triggers="mouseenter"
.
这是查看代码
<div [ngbPopover]="popContent" class="btn mr-2 btn-outline-secondary"
ngbPopover="<button>Hello</button>" triggers="mouseenter" >
Hover over me!
</div>
<div [ngbPopover]="popContent" class="btn mr-2 btn-outline-secondary"
ngbPopover="You see, I show up on hover!" triggers="mouseenter"
(click)="$event.stopPropagation()" >
Hover over me!
</div>
<div [ngbPopover]="popContent" class="btn btn-outline-secondary"
ngbPopover="You see, I show up on hover!" triggers="mouseenter">
Hover over me!
</div>
<ng-template #popContent>
<div>
<button> Cancel </button>
</div>
</ng-template>
现在弹出框可见,但如果我将鼠标悬停在另一个 div(Div 而非弹出框容器上),则前一个弹出框应该被隐藏,如果我将鼠标悬停在任何其他弹出框上,新的弹出框应该可见其他 div 包含弹出窗口。
请告诉我,如何一次显示一个弹出窗口。
这是一个有效的 fiddle/stack 闪电战
https://stackblitz.com/edit/angular-d4dgz1?file=app/popover-triggers.html
你还得提一下mouseleave。像这样:
<div [ngbPopover]="popContent" class="btn mr-2 btn-outline-secondary"
ngbPopover="<button>Hello</button>" triggers="mouseenter:mouseleave" >
Hover over me!
</div>
<div [ngbPopover]="popContent" class="btn mr-2 btn-outline-secondary"
ngbPopover="You see, I show up on hover!" triggers="mouseenter:mouseleave"
(click)="$event.stopPropagation()" >
Hover over me!
</div>
<div [ngbPopover]="popContent" class="btn btn-outline-secondary"
ngbPopover="You see, I show up on hover!" triggers="mouseenter:mouseleave">
Hover over me!
</div>
<ng-template #popContent>
<div>
<button> Cancel </button>
</div>
</ng-template>
使用 HostListener 监听文档上的 mousemove 事件,然后使用 @ViewChild Decorator 获取元素引用
@HostListener('mouseleave',['$event']) onHoverOutside(){
this.ref.close();
}
我动态生成了 divs。在那些 div 上,我有 ngPopovers。在 ngPopover 中,我有按钮,我想点击按钮按钮。所以我像这样触发了 ng popover triggers="mouseenter"
.
这是查看代码
<div [ngbPopover]="popContent" class="btn mr-2 btn-outline-secondary"
ngbPopover="<button>Hello</button>" triggers="mouseenter" >
Hover over me!
</div>
<div [ngbPopover]="popContent" class="btn mr-2 btn-outline-secondary"
ngbPopover="You see, I show up on hover!" triggers="mouseenter"
(click)="$event.stopPropagation()" >
Hover over me!
</div>
<div [ngbPopover]="popContent" class="btn btn-outline-secondary"
ngbPopover="You see, I show up on hover!" triggers="mouseenter">
Hover over me!
</div>
<ng-template #popContent>
<div>
<button> Cancel </button>
</div>
</ng-template>
现在弹出框可见,但如果我将鼠标悬停在另一个 div(Div 而非弹出框容器上),则前一个弹出框应该被隐藏,如果我将鼠标悬停在任何其他弹出框上,新的弹出框应该可见其他 div 包含弹出窗口。
请告诉我,如何一次显示一个弹出窗口。 这是一个有效的 fiddle/stack 闪电战 https://stackblitz.com/edit/angular-d4dgz1?file=app/popover-triggers.html
你还得提一下mouseleave。像这样:
<div [ngbPopover]="popContent" class="btn mr-2 btn-outline-secondary"
ngbPopover="<button>Hello</button>" triggers="mouseenter:mouseleave" >
Hover over me!
</div>
<div [ngbPopover]="popContent" class="btn mr-2 btn-outline-secondary"
ngbPopover="You see, I show up on hover!" triggers="mouseenter:mouseleave"
(click)="$event.stopPropagation()" >
Hover over me!
</div>
<div [ngbPopover]="popContent" class="btn btn-outline-secondary"
ngbPopover="You see, I show up on hover!" triggers="mouseenter:mouseleave">
Hover over me!
</div>
<ng-template #popContent>
<div>
<button> Cancel </button>
</div>
</ng-template>
使用 HostListener 监听文档上的 mousemove 事件,然后使用 @ViewChild Decorator 获取元素引用
@HostListener('mouseleave',['$event']) onHoverOutside(){
this.ref.close();
}