Angular 角度:当我通过单击对话框外部关闭Mat对话框时,如何定义默认值

Angular 角度:当我通过单击对话框外部关闭Mat对话框时,如何定义默认值,angular,Angular,当通过单击对话框外部关闭对话框时,我希望发出一个默认值。目前,它发出未定义的,这在许多情况下都可以,但是当通过单击外部中止对话框时,我想发出一个默认值。 我如何实现这种行为? 下面是一个实际的例子: 打开对话框 在对话框中键入somthing 再打开一次 在其外部单击并查看正在消失的值 我希望它表现如何? 当通过单击外部关闭对话框时,它应始终显示一些值。根据示例,您可以添加OR运算符: dialogRef.afterClosed().subscribe(result => {

当通过单击对话框外部关闭对话框时,我希望发出一个默认值。目前,它发出
未定义的
,这在许多情况下都可以,但是当通过单击外部中止对话框时,我想发出一个默认值。

我如何实现这种行为?

下面是一个实际的例子:

  • 打开对话框
  • 在对话框中键入somthing
  • 再打开一次
  • 在其外部单击并查看正在消失的值
  • 我希望它表现如何?


    当通过单击外部关闭对话框时,它应始终显示一些值。

    根据示例,您可以添加OR运算符:

    dialogRef.afterClosed().subscribe(result => {
          console.log('The dialog was closed');
          this.animal = result || defaultValue;
        });
    
    在该代码中,结果将自动被未定义的覆盖

    dialogRef.afterClosed().subscribe(result => {
      console.log('The dialog was closed');
      if(!!result){
          this.animal = result;
      }
    });
    
    使用backdropClick observable,单击叠加背景时发射

    然后使用MatDialogRef Instance访问close方法,该方法接受可选参数。用它来提供价值

    试试这个

    组件技术

    dialogRef.backdropClick().subscribe(v=>{
          dialogRef.close('Hello!');
     });
    
     dialogRef.afterClosed().subscribe(result => {
      console.log('The dialog was closed');
      this.animal = result;
     });
    

    这是我的解决方案,在Angular 9->

    addNew() {
    const dialogConfig = new MatDialogConfig();
    dialogConfig.disableClose = true;
    
    const dialogRef = this.dialog.open(AddDialogComponent, dialogConfig);
    

    }

    是否可以在对话框中定义它?我不这样认为,因为传递数据的唯一方法是调用
    dialogRef
    close()
    函数。这并不能回答问题。不需要禁用关闭。
    addNew() {
    const dialogConfig = new MatDialogConfig();
    dialogConfig.disableClose = true;
    
    const dialogRef = this.dialog.open(AddDialogComponent, dialogConfig);