Angular [已解决]角度材质对话框:未触发dialogRef.afterClosed()订阅
更新2 该问题与取消订阅时出错有关。奇怪的是,控制台没有显示任何消息,但仍然停止了代码的工作。修复此问题后,它立即起作用。 问题 我正在使用material ui打开Mat对话框内部的组件。关闭对话框时,不会触发对dialogRef的订阅 parentComponent调用editComponent()打开对话框 父组件:Angular [已解决]角度材质对话框:未触发dialogRef.afterClosed()订阅,angular,angular-material,subscription,mat-dialog,Angular,Angular Material,Subscription,Mat Dialog,更新2 该问题与取消订阅时出错有关。奇怪的是,控制台没有显示任何消息,但仍然停止了代码的工作。修复此问题后,它立即起作用。 问题 我正在使用material ui打开Mat对话框内部的组件。关闭对话框时,不会触发对dialogRef的订阅 parentComponent调用editComponent()打开对话框 父组件: import { MatDialog } from '@angular/material/dialog'; export class BewirtungListTableC
import { MatDialog } from '@angular/material/dialog';
export class BewirtungListTableComponent ...{
constructor(..., public dialog: MatDialog,...) {}
editCatering(data){
this.requestSub = this.guestService.getGuestsByCateringId(bewirtung.id).subscribe((guest: Guest[]) => {
let dialogRef = this.dialog.open(BewirtungEditComponent, {
data: {data, guest},
disableClose: true,
autoFocus: false
});
dialogRef.afterClosed().subscribe(result=>{
console.log("dialog closed")
console.log(result)
})
};
onSubmit() {
...
this.updateSub = this.bewirtungService.updateCatering(cateringCreate).subscribe(
(b: Bewirtung) => {
...
this.dialogRef.close(b);
console.log(this.dialogRef)
this.dialogRef.afterClosed().subscribe(()=>console.log("after closed editComponent"))
},
() => this.notificationService.error('Die Bewirtung konnte nicht geändert werden.')
);
}
然后dialogComponent在onSubmit()调用时关闭
但是即使在那里,我也没有得到任何东西。你确定执行了
这个.dialogRef.close(b)
?控制台中是否有任何错误?有时代码在关闭模式时崩溃…是的。对话框正确关闭,没有控制台错误。请确保我已从对话框中删除了窗体以及所有其他功能。还是一样:对话框关闭,但afterClosed()不会触发。您的代码看起来很好,没有明显的原因使其无法工作。你能把它复制出来吗?否则,有时您所要做的就是停止服务器,然后重新运行ng serve…Quote:“您确定执行了此.dialogRef.close(b)吗?控制台中是否存在任何错误?有时代码在关闭模式时崩溃…-随机16小时前”再次检查后,我发现了问题。onDestroy()我从subs取消订阅(),但有一个订阅导致错误。我不知道为什么控制台没有显示错误消息,但这就是它不工作的原因。非常感谢你的帮助!
onSubmit() {
...
this.updateSub = this.bewirtungService.updateCatering(cateringCreate).subscribe(
(b: Bewirtung) => {
...
this.dialogRef.close(b);
console.log(this.dialogRef)
this.dialogRef.afterClosed().subscribe(()=>console.log("after closed editComponent"))
},
() => this.notificationService.error('Die Bewirtung konnte nicht geändert werden.')
);
}