我有一个对话框组件,当对话框关闭时,将注册用户的输入。然后使用此输入检查是否要运行下一个功能。
但是,我意识到该变量永远不会立即更改为用户选择的值,直到下一次再次打开和关闭对话框之前,该变量一直未定义。
我了解到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()。
感谢您的帮助,谢谢!
答案 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();
}
});
}
}