重新打开已销毁的动态对话框

前端开发 2026-07-12

我在应用中使用了多个PrimeNg Dynamic Dialog,想在进程结束时一次性关闭它们全部。

比方说,我先打开第一个,然后是第二个,接着是第三个。

我是这样打开第一个的:

protected addModal() {
    this.dialogService.open(ModalComponent, {  
        width: "60%",
        closable: true,
        modal: true,
        dismissableMask: true,
    });
}

后来,第三个模态中的一个方法使用这里所述的技巧来销毁已打开的模态: https://stackoverflow.com/a/71586058/6188947

this.dialogService.dialogComponentRefMap.forEach(dialog => {
    dialog.destroy();
});

可以生效。不过当我再次调用我的 addModal() 方法时,什么也没发生。

解决方案

尝试在 instance 属性内访问 close() 方法。destroy 似乎阻止对话框再次打开。

close() {
  this.dialogService.dialogComponentRefMap.forEach((x) => x.instance.close());
}

Stackblitz演示

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章