确保下一个功能仅在对话框关闭后才能运行

时间:2019-06-28 05:35:06

标签: javascript angular

我有一个对话框组件,当对话框关闭时,将注册用户的输入。然后使用此输入检查是否要运行下一个功能。

但是,我意识到该变量永远不会立即更改为用户选择的值,直到下一次再次打开和关闭对话框之前,该变量一直未定义。

我了解到Javascript默认情况下会同步运行功能,因此我试图将它们分为两个不同的功能,但也无济于事。

代码如下:

   openDialog() {
      const dialogRef = this.dialogService.open(ConfirmationDialogComponent, {
        context: {
          name: this.name,
          details: this.details,
        },
      }).onClose.subscribe(confirm => this.confirm = confirm);

      console.log(this.confirm); //returns undefined

      if (this.confirm === true) { //doesn't run until dialog is opened and closed the second time
        console.log('true');
        this.record();
      }
    }

p.s。我在对话框中使用angular ngx-admin库。因此对于正常的角度对话框,.onClose()=== .afterClosed()。

感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

将您的代码放入 subscribe()方法内,例如:

openDialog() {
    const dialogRef = this.dialogService.open(ConfirmationDialogComponent, {
        context: {
            name: this.name,
            details: this.details,
        },
    }).onClose.subscribe(confirm => { 
        if(confirm) {
            console.log(confirm);
            this.record();
        }
    });
  }
}