Angular PrimeNG p-confirmDialog 显示两次

Angular PrimeNG p-confirmDialog display twice

提问人:L. Kvri 提问时间:7/7/2021 更新时间:10/7/2022 访问量:3944

问:

当确认对话框显示两次时,情况是哪种情况? 或者从其他方面来看,当确认对话框显示两次时,原因是什么?

我有一个简单的对话框模板

<p-confirmDialog icon="fa fa-exclamation-triangle"
                 width="444"
                 [closable]="false"
                 key="uniqueidofdialog"
                 appendTo="body"
                 #dialogref>
  <p-footer>
    <button id="gemini_consentLockedByAnotherUser_btnOk"
            type="button"
            pButton
            class="button-primary"
            label="OK"
            (click)="dialogref.accept()"></button>
  </p-footer>
</p-confirmDialog>

  private showConfirmDialog() {
    this.confirmationService.confirm({
      message: `Warning! blah-blah.`,
      header: `Warning header`,
      key: 'uniqueidofdialog',
      accept: () => {
        // TODO
      }
    });     
  }

当然,ComfirmationService 包含在模块的 provider 部分中,而 ComfirmDialogModule 则导入到模块的 import 部分。showConfirmDialog() 调用一次。

我错过了什么?

先谢谢你

Angular Dialog (Angular 对话框 Primen) 显示

评论


答:

4赞 bogere goldsoft 8/11/2021 #1

当多个确认对话框具有相同的键时,通常会导致该问题。因此,请确保您的密钥对于您的对话是唯一的。我看到你已经完成了......只需仔细检查您的代码库中是否有所有现有的确认对话框

评论

0赞 Carcigenicate 9/13/2023
或者,如果您根本不使用密钥。对我来说,我必须为我的孩子添加一个键,以防止所有对话框触发,因为父对话框中的对话也没有使用键。p-confirmDialog
7赞 Flavien Volken 10/7/2022 #2

如果您没有提供任何密钥,您也可以仅为您的组件提供密钥来解决此问题ConfirmationService

@Component({
  providers: [ConfirmationService], // <- inject the service at the component level.
  selector: 'your-component',
  styleUrls: ['./your.component.scss'],
  templateUrl: './your.component.html',
})