Angular [已解决]角度材质对话框:未触发dialogRef.afterClosed()订阅

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

更新2

该问题与取消订阅时出错有关。奇怪的是,控制台没有显示任何消息,但仍然停止了代码的工作。修复此问题后,它立即起作用。

问题 我正在使用material ui打开Mat对话框内部的组件。关闭对话框时,不会触发对dialogRef的订阅

parentComponent调用editComponent()打开对话框

父组件:

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.')
            );
        }