Javascript ng引导(NgbModal):有没有办法有条件地阻止模式关闭?
我有一个非常基本的模式,用于让用户输入注释Javascript ng引导(NgbModal):有没有办法有条件地阻止模式关闭?,javascript,angular,ng-bootstrap,Javascript,Angular,Ng Bootstrap,我有一个非常基本的模式,用于让用户输入注释 openNotes(conquest) { const modalRef = this.modalService.open(EditNotesModalComponent); modalRef.result.then((result) => { console.log('closed', result); }, (reason) => { console.log('dismissed'
openNotes(conquest) {
const modalRef = this.modalService.open(EditNotesModalComponent);
modalRef.result.then((result) => {
console.log('closed', result);
},
(reason) => {
console.log('dismissed', reason);
});
return modalRef;
}
我想做的是,如果用户在有未完成的便笺时关闭模式,则显示另一个模式,该模式将提醒他们,如果他们关闭模式,将丢失未保存的工作。我希望用户能够选择继续编辑(在这种情况下,第二个模态将关闭,第一个模态将保持打开)或放弃他们的工作(在这种情况下,两个模态都将关闭)
将这样的内容连接到自定义模式关闭操作非常容易,例如用户手动单击通常会关闭模式的按钮。我遇到的问题是,我似乎无法知道用户何时通过单击模态外部或按ESC键解除模态
在AngularJS的UibModal中,您可以通过以下方式捕获此类事件:
$scope.$on('modal.closing', (event) => {
if (this.newNote.length > 0) {
event.preventDefault();
this.openConfirmModal();
}
});
然后,根据确认模式的解析方式,可以决定关闭模式或保持模式打开。在Angular 4中NgbModal可能有这样的情况吗
谢谢
编辑:我知道NgbModalOptions中的BeforeDisclease函数,但您不能将任何参数传递给此函数。我希望仅当用户在模式中有未完成的注释时,确认模式才会弹出。您可以使用
@Viewchild
获取模式中输入字段的引用,然后使用beforeDimiss
功能获取用户键入的文本
下面的示例有一个带有
的模式,当模式被取消时(通过单击背景或按ESC键),文本区域中的值将记录到控制台
HTML
在HTML中,将模板引用变量添加到输入字段:
<div class="modal-body">
<textarea #myTextarea></textarea>
</div>
open() {
const modalRef = this.modalService.open(NgbdModalContent, {
beforeDismiss: () => {
console.log('The text typed by the user before the modal was dimissed was:')
console.log(modalRef.componentInstance.textarea.nativeElement.value)
return true;
}
});
}
父组件类型脚本
在打开模态的组件中,添加以下beforeDimiss
功能。行modalRef.componentInstance.textarea.nativeElement.value
将从输入字段获取值:
<div class="modal-body">
<textarea #myTextarea></textarea>
</div>
open() {
const modalRef = this.modalService.open(NgbdModalContent, {
beforeDismiss: () => {
console.log('The text typed by the user before the modal was dimissed was:')
console.log(modalRef.componentInstance.textarea.nativeElement.value)
return true;
}
});
}
请参阅演示。可能重复的·let-ngbModalOptions:ngbModalOptions={background:'static',keyboard:false}控制台日志(ngbModalOptions);const modalRef=this.modalService.open(NgbdModalContent,ngbModalOptions)@AhammadaliPK我希望用户能够通过ESC或单击背景关闭模式,但如果他们有任何未保存的工作,我希望显示确认模式。当按ESC时,您无法捕获事件吗?@AhammadaliPK我无法捕获正在按ESC和用户在模式外单击的事件。