我使用的是angular 6和ngx-bootstrap 3.0.1
我显示了一个模式,并且我希望当用户在更新表单后尝试关闭模式时,能够显示放弃/取消确认。
当用户使用我的自定义关闭按钮时,我没有问题,但当他在模式之外使用背景单击时,我不知道如何调用我的关闭函数。
如何处理背景单击才能显示我的确认消息?
发布于 2020-10-10 00:36:55
使用选项打开您的模式
this.bsModalRef = this.modalService.show(ExampleModal, {
ignoreBackdropClick: true,
keyboard: false
});在ExampleModal中放置以下代码
ngOnInit(): void {
document.documentElement.addEventListener('click', this.hideIfIsBackdropClick.bind(this));
}
hideIfIsBackdropClick(event: any): void {
if (event.target.classList.contains('modal')) {
this.hide();
}
}
hide(): void {
if (anyBooleanHere) {
this.bsModalRef.hide();
}
}发布于 2019-02-26 16:48:13
在ngx-bootstrap文档页面中,您可以很容易地找到解决方案:https://valor-software.com/ngx-bootstrap/#/modals#directive-events
要查看触发了哪些事件,
在您的组件端,
import { Component, ViewChild } from '@angular/core';
import { ModalDirective } from 'ngx-bootstrap/modal';
@Component({
selector: 'demo-modal-events',
templateUrl: './events.html',
styles: [`
.card {
margin-bottom: 0.75rem;
padding: 8px;
}
`]
})
export class DemoModalEventsComponent {
@ViewChild(ModalDirective) modal: ModalDirective;
messages: string[];
showModal() {
this.messages = [];
this.modal.show();
}
handler(type: string, $event: ModalDirective) {
this.messages.push(
`event ${type} is fired${$event.dismissReason
? ', dismissed by ' + $event.dismissReason
: ''}`
);
}
}在您的模板方面,
<button type="button" class="btn btn-primary" (click)="showModal()">Open a modal</button>
<br><br>
<pre class="card card-block card-header" *ngFor="let message of messages">{{message}}</pre>
<div class="modal fade" bsModal #modal="bs-modal"
tabindex="-1" role="dialog" aria-labelledby="dialog-events-name"
(onShow)="handler('onShow', $event)"
(onShown)="handler('onShown', $event)"
(onHide)="handler('onHide', $event)"
(onHidden)="handler('onHidden', $event)">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<h4 id="dialog-events-name" class="modal-title pull-left">Modal</h4>
<button type="button" class="close pull-right" aria-label="Close" (click)="modal.hide()">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
Just another modal <br>
Click <b>×</b>, press <code>Esc</code> or click on backdrop to close modal.
</div>
</div>
</div>
</div>更新:
据我所知,您可以像这样检查$event:
if($event.dismissReason == 'backdrop-click')
this.myFunc();发布于 2020-06-04 05:44:03
您可以使用钩子ngOnDestroy()来检测用户何时关闭模式
https://stackoverflow.com/questions/54881399
复制相似问题