当另一个模态关闭时,如何打开角度为2的材料模态



我有一个名为mediosSeleccionadas Selected的列表,我需要使用列表中的每个元素打开一个模态,但代码只能在前一个模态关闭时打开另一个模态。

我试过这个代码:

this.medicoesSelecionadas.forEach(medicao => {
let historicoEmpreiteiro;
this.loading = true;
console.log(' ENTORU AQUI ')
this.medicaoEmpService.ObterHistoricoEmpreiteiro(medicao.id)
.subscribe(result => {
this.loading = false;
historicoEmpreiteiro = result;
const refDialog = this.dialog.open(DescontoEmpreiteiroComponent, {
data: { historicoEmpreiteiro: JSON.stringify(historicoEmpreiteiro) }
});
refDialog.afterClosed().subscribe(r => {
console.log('Entrou closed');
});
});
console.log(' ENTORU ALI ')
});

但问题是,foreach在同一时间打开所有模态

假设:this.medicosSeleccionadas是对象的数组

只要这个.medicosSeleccionadas数组不是很长,我可能会用递归来解决这个问题。假设上面的代码在一个名为"existingFunc(("的函数中,我会做如下操作:

existingFunc() {
this.recursiveFunc(this.medicoesSelecionadas);
}
recursiveFunc(medicoesSelecs: Array<Object>) { // replace this type with the correct one
if (medicoesSelecs.length > 0) {
let medicao = medicoesSelecs.shift(); // remove first item from array
let historicoEmpreiteiro;
this.loading = true;
console.log(' ENTORU AQUI ');
this.medicaoEmpService.ObterHistoricoEmpreiteiro(medicao.id)
.subscribe(result => {
this.loading = false;
historicoEmpreiteiro = result;
const refDialog = this.dialog.open(DescontoEmpreiteiroComponent, {
data: { historicoEmpreiteiro: JSON.stringify(historicoEmpreiteiro) }
});
refDialog.afterClosed().subscribe(r => {
console.log('Entrou closed');
this.recursiveFunc(medicoesSelecs); // call self with remaining array
});
});
console.log(' ENTORU ALI ');
}
}
}

这将产生一些开销,因为所有函数都将保留在堆栈中,直到最后一个函数最终关闭,所以需要注意不要使用太大的数组进行调用。

最新更新