过去使用模态时,我遇到了一种模式,该模式返回一个ModalRef对象,该对象具有对它的承诺,当模态关闭或关闭时,该承诺会被解决或拒绝。
查看Ngx-Bootstrap中的documentation for the BsModalRef,似乎没有任何方法可以跟踪该模式参考是已关闭还是已关闭。
相反,他们似乎建议在BsModalService上订阅onHidden()
事件。不幸的是,这对我不起作用,因为当任何模式被隐藏时,它将触发该事件。我只想对隐藏的特定模式实例做出反应。
我有什么办法吗?
我已经考虑过使用Rxjs的take()
运算符仅订阅onHidden
Observable后才触发第一个事件,但这有点琐。
const modalRef = modalService.show(RedirectToHomeModalComponent);
const returnHome = () => console.log('Returning home');
this.bsModalService.onHidden.pipe(take(1), returnHome);
也许您可以从模式内容中订阅任何Eventmitter。
modal.component.ts
hideEvent: EventEmitter<any> = new EventEmitter();
onSomeFunction(){
this.hideEvent.next(value);
}
ngOnDestroy(){
this.hideEvent.next(); // modal is closed without any data.
}
parent.component.ts
const modalRef = modalService.show(RedirectToHomeModalComponent);
this.modalRef.content.hideEvent.pipe(take(1)).subscribe(value => {
if(value){ // closed with a value.
... do something
}
else { // closed via backdrop or something else
... do something
}
});