首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据确认子对话框中所选答案的角度关闭父对话框?

问如何根据确认子对话框中所选答案的角度关闭父对话框?
EN

Stack Overflow用户
提问于 2022-04-28 16:20:11
回答 1查看 351关注 0票数 0

我试图关闭一个父席对话框,这取决于孩子确认垫对话框的角度。子确认对话框说:“您有未保存的更改。确实要关闭吗?”如果用户单击“是”,则两个对话框都应该关闭。如果他们拒绝,那么只有确认对话框应该关闭。不起作用,但不起作用。

下面是带有两个按钮的模板

代码语言:javascript
复制
<mat-dialog-actions align="end">
  <button
    mat-button color="accent" (click)="save()" [mat-dialog-close]="true" cdkFocusInitial
  >Save
  </button>
  <button mat-button (click)="openConfirmDialog()">cancel</button>
</mat-dialog-actions>

以下片段位于父对话框中:

代码语言:javascript
复制
  constructor(
    public dialog: MatDialog,
    public parentDialogRef: MatDialogRef<ParentDialogComponent>,

当用户单击父对话框中的“保存”按钮时,将弹出确认对话框。子确认对话框打开时对父对话框具有引用,以便可以关闭它。

代码语言:javascript
复制
  openConfirmDialog() {
    const dialogRef = this.dialog.open(ConfirmDialogComponent, {
      message: "You have unsaved changes. Are you sure you want to close?"
    });
    dialogRef.afterClosed().subscribe(result => {
      if (result=='true') {
        console.log('result=',result,parentDialogRef=',this.parentDialogRef);
        this.parentDialogRef.close();
      }
    })
  }

console.log显示“true”的结果和有效的parentDialogRef,但是当用户选择“是”时,父对话框无法关闭。

下面是确认对话框.ts代码:

代码语言:javascript
复制
import {Component, Inject} from '@angular/core';
import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';

@Component({
  selector: 'app-confirm-dialog',
  templateUrl: './confirm-dialog.component.html',
  styleUrls: ['./confirm-dialog.component.css']
})
export class ConfirmDialogComponent {
  constructor(
    public dialogRef: MatDialogRef<ConfirmDialogComponent>,
    @Inject(MAT_DIALOG_DATA) public message: string) {
    dialogRef.disableClose = true;
  }
}

我希望这段代码是通用的,这样任何其他组件都可以使用它。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-29 20:27:52

解决方案是寻找布尔值真,而不是字符串“true”。现在起作用了。希望其他人能从这篇文章中获益。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72047130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档