Angular 隐藏特定BsModalRef实例后,如何调用方法?

Angular 隐藏特定BsModalRef实例后,如何调用方法?,angular,ngx-bootstrap,ngx-bootstrap-modal,Angular,Ngx Bootstrap,Ngx Bootstrap Modal,在过去使用modals时,我遇到了一种模式,它返回一个ModalRef对象,该对象上有一个承诺,当关闭或取消modal时,该承诺被解析或拒绝 查看InNGX引导,似乎没有任何方法可以跟踪该模式引用是否已关闭或取消 相反,他们似乎建议订阅BsModalService上的onHidden()事件。不幸的是,这对我不起作用,因为它会在任何模态被隐藏时触发事件。我只想对隐藏的特定模态实例作出反应 我有什么办法可以这样做吗 我考虑过使用Rxjs的take()操作符,只接收订阅了onHiddenObserv

在过去使用modals时,我遇到了一种模式,它返回一个ModalRef对象,该对象上有一个承诺,当关闭或取消modal时,该承诺被解析或拒绝

查看InNGX引导,似乎没有任何方法可以跟踪该模式引用是否已关闭或取消

相反,他们似乎建议订阅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.
}
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
    }
});