问题
I have dynamically generated divs. On those divs, i have ngPopovers. Inside ngPopover, i have button and i want to click on button button. So i have triggered ng popover like this triggers="mouseenter"
.
Here is code for view
<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>
Now popover is visible, but if i hover on another div(Div other than the popover container), the previous popover should be hidden and new popover should be visible if i hover any other div containing the popover.
Please tell me, how can show one popover at a time. Here is a working fiddle/stack blitz https://stackblitz.com/edit/angular-d4dgz1?file=app/popover-triggers.html
回答1:
Use HostListner to listen mousleave event on document then use @ViewChild Decorator to get the Element ref
@HostListener('mouseleave',['$event']) onHoverOutside(){
this.ref.close();
}
Check the Example:https://stackblitz.com/edit/angular-d4dgz1-3w7f3p
回答2:
You have to mention mouseleave as well. Like this:
<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>
来源:https://stackoverflow.com/questions/51655768/show-one-popover-on-mouseenter-event-at-a-time-angular-ngbootstrap