You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ng-bootstrap弹出框关闭时调用filterName()函数?

解决ng-bootstrap Popover关闭时自动调用筛选函数的问题

你可以利用ng-bootstrap Popover提供的hidden输出事件实现需求——这个事件会在popover完全关闭时触发,不管是点击外部、点击触发元素还是其他关闭方式。

直接绑定关闭事件

只需要给popover触发元素添加(hidden)="filterName()"即可,这样每次popover关闭时都会自动调用filterName():

<ng-template #namePopContent>
   <input type="text" id="name" [(ngModel)]="name"/>
   <!-- 可保留该图标,用户仍能选择点击它直接筛选并关闭 -->
   <i class="bi bi-check" (click)="filterName()"></i>
</ng-template>

<tr>
   <th class="th" scope="col">
      Name
      <i [autoClose]="'outside'" placement="bottom" [ngbPopover]="namePopContent" (hidden)="filterName()"></i>
   </th>
</tr>

仅在点击外部关闭时触发(可选)

如果需要只在点击外部关闭popover时才调用筛选函数,可以通过hidden事件的参数NgbPopoverCloseEvent判断关闭原因:

首先在组件类中导入事件类型:

import { NgbPopoverCloseEvent } from '@ng-bootstrap/ng-bootstrap';

修改模板中的事件绑定:

<i [autoClose]="'outside'" placement="bottom" [ngbPopover]="namePopContent" (hidden)="handlePopoverClose($event)"></i>

最后在组件类中添加处理函数:

handlePopoverClose(event: NgbPopoverCloseEvent) {
  // 仅当关闭原因是点击外部时执行筛选
  if (event.reason === 'outside') {
    this.filterName();
  }
}

这样既能精准控制只有点击外部关闭时自动执行筛选,也保留了原有的图标点击功能。

内容的提问来源于stack exchange,提问作者user6781

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 19:50:59