Angular 当p-dialog上的fancy box打开时,关闭escape问题上底漆的p-dialog

Angular 当p-dialog上的fancy box打开时,关闭escape问题上底漆的p-dialog,angular,fancybox,primeng,Angular,Fancybox,Primeng,我在关闭p-dialog和fancy box时遇到了一个问题。当两个开关都打开时,按escape键两个开关都关闭 流程是: 打开p-dialog时,p-dialog中有一个图像 当我点击图片时,花式盒子打开了 然后我按退出 两个都关门了 我想在按escape键时一个接一个地关闭这两个,而不是一次按两个键。在prime ng对话框中有closeOnEscape属性。 可以使用此属性在转义时关闭对话框 一开始,把它弄错。当第一个对话框接近escape时。为转义事件添加HostListener,并将c

我在关闭p-dialog和fancy box时遇到了一个问题。当两个开关都打开时,按escape键两个开关都关闭

流程是:

  • 打开p-dialog时,p-dialog中有一个图像
  • 当我点击图片时,花式盒子打开了
  • 然后我按退出
  • 两个都关门了

  • 我想在按escape键时一个接一个地关闭这两个,而不是一次按两个键。

    在prime ng对话框中有closeOnEscape属性。 可以使用此属性在转义时关闭对话框

    一开始,把它弄错。当第一个对话框接近escape时。为转义事件添加HostListener,并将closeOnEscape更改为true

    因此,一个接一个的对话框将被关闭

    例如:

    在HTML中:

     <p-dialog closeOnEscape="closeDialog">
            <p-dropdown appendTo="body"></p-dropdown>
        </p-dialog>
    

    希望这对你有帮助

    我怀疑更改此.closeDialog将不起作用,因为Dialog.prototype.bindGlobalListeners仅在对话状态更改为“可见”时才被调用,而这是选中closeOnEscape的唯一位置我正在使用p侧栏中的p表。我面临着类似的问题,一旦我点击桌子上的任何地方,escape就会停止工作。所以这项工作帮助我解决了这个问题。谢谢
    closeDialog : boolean = false;
    
    @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {
        console.log(event);
        this.closeDialog = !this.closeDialog;
    }