如何配置弹窗仅通过关闭/取消图标隐藏,屏蔽点击及ESC关闭?
弹窗关闭逻辑配置分析与调整方案
嘿,咱们来拆解下你的弹窗配置,把它调整到完全符合你的需求!
首先先梳理现有代码的作用和问题:
- 你设置的
[config]="{backdrop: false,keyboard: false}"是完全正确的:backdrop: false:禁用了点击弹窗外部背景关闭弹窗的功能keyboard: false:禁用了按下ESC键关闭弹窗的功能
这两项配置刚好满足你“点击屏幕任意位置或ESC不触发关闭”的要求。
- 但弹窗根div上的
(click)="bsModalRef.hide()"是个问题——这个绑定会导致点击弹窗内部任何区域都会触发关闭,和你“仅点击关闭/取消图标时隐藏”的需求完全冲突!
调整方案
只需要两步就能搞定:
- 移除弹窗根元素上的
(click)="bsModalRef.hide()"事件绑定 - 把关闭逻辑
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




