在确定的功能启用时刻,我打开了一个实质性对话框,我需要等待对话框的回答才能继续执行我的功能,但是该功能在我选择确认对话框之前正在运行。
我尝试了一些事情
我的默认功能:
alteraDadosProduto(){
let confirmouAtualizacaoProduto = this.verificaProdutoPossuIAnuncio();
if(confirmouAtualizacaoProduto == false){
return ;
}
... functions continue
我的对话框功能:
verificaProdutoPossuIAnuncio(): boolean{
if(this.produtosConfirmadosAnuncio[0].anuncio.length == 0){
return true;
}else{
const dialogRef = this.dialog.open(DialogConfirmacaoAtualizacaoAnuncioComponent);
dialogRef.afterClosed().subscribe(result => {
if(result == true){
return true;
}else{
return false;
}
})
}
}
如何等待订阅结果继续我的alteraDadosProduto功能?谢谢
答案 0 :(得分:0)
您应订阅look at here
答案 1 :(得分:0)
Sory无法写commnet(低代表)。
我不完全了解你。
但是,如果您需要在对话框关闭后将数据传递到result
,例如:
import {MdDialogRef} from '@angular/material';
export class ModalComponent implements OnInit {
constructor(public dialogRef: MdDialogRef<ModalComponent>) {}
closeModal() {
this.dialogRef.close(true);
//pass data to this.dialogRef.close(yourData) to pass it for component where you open dialog
}
}
而且您可以轻松地对代码中的结果进行操作
dialogRef.afterClosed().subscribe(result => {
if(result == true){
return true;
}else{
return false;
}
对不起,如果我不完全了解您。
答案 2 :(得分:0)
如果您为 angular mat-dialog-close 传递一个函数,它将始终在对话框打开时调用该函数。因此,不是函数调用,而是为 mat-dialog-close 分配一个属性。
答案 3 :(得分:0)
在你的组件中声明:
public subject = new Subject<boolean>();
您的默认功能是:
alteraDadosProduto(){
this.subject.subscribe(response => {
if(response == true){
// Stuff you want to do...
} else {
// Stuff you want to do...
}
});
this.verificaProdutoPossuIAnuncio();
}
你的对话功能:
verificaProdutoPossuIAnuncio(): void{
if(this.produtosConfirmadosAnuncio[0].anuncio.length == 0){
return true;
}else{
const dialogRef = this.dialog.open(DialogConfirmacaoAtualizacaoAnuncioComponent);
dialogRef.afterClosed().subscribe(result => {
this.subject.next(result);
})
}
}