You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置弹窗仅通过关闭/取消图标隐藏,屏蔽点击及ESC关闭?

弹窗关闭逻辑配置分析与调整方案

嘿,咱们来拆解下你的弹窗配置,把它调整到完全符合你的需求!

首先先梳理现有代码的作用和问题:

  • 你设置的[config]="{backdrop: false,keyboard: false}"完全正确的
    • backdrop: false:禁用了点击弹窗外部背景关闭弹窗的功能
    • keyboard: false:禁用了按下ESC键关闭弹窗的功能
      这两项配置刚好满足你“点击屏幕任意位置或ESC不触发关闭”的要求。
  • 但弹窗根div上的(click)="bsModalRef.hide()"是个问题——这个绑定会导致点击弹窗内部任何区域都会触发关闭,和你“仅点击关闭/取消图标时隐藏”的需求完全冲突!

调整方案

只需要两步就能搞定:

  1. 移除弹窗根元素上的(click)="bsModalRef.hide()"事件绑定
  2. 把关闭逻辑bsModalRef.hide()仅绑定到你的关闭按钮和取消按钮上

调整后的代码示例:

<div bsModal #bsModalRef="bs-modal" [config]="{backdrop: false,keyboard: false}" aria-hidden="true" aria-label="Close">
  <!-- 这里放置你的弹窗内容 -->
  
  <!-- 仅在关闭/取消按钮上绑定关闭事件 -->
  <button class="close-icon" (click)="bsModalRef.hide()">×</button>
  <button class="cancel-btn" (click)="bsModalRef.hide()">取消</button>
</div>

这样配置后,就完全符合你的需求了:只有点击关闭图标或取消按钮时弹窗才会隐藏,点击屏幕其他区域、弹窗内部非按钮区域,或是按下ESC键,都不会触发关闭。

内容的提问来源于stack exchange,提问作者D.Sridhar

火山引擎 最新活动