一旦隐藏了特定的BsModalRef实例,如何调用方法?

问题描述 投票:0回答:1

过去使用模态时,我遇到了一种模式,该模式返回一个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);
angular ngx-bootstrap ngx-bootstrap-modal
1个回答
0
投票

也许您可以从模式内容中订阅任何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
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.