我试图关闭一个父席对话框,这取决于孩子确认垫对话框的角度。子确认对话框说:“您有未保存的更改。确实要关闭吗?”如果用户单击“是”,则两个对话框都应该关闭。如果他们拒绝,那么只有确认对话框应该关闭。不起作用,但不起作用。
下面是带有两个按钮的模板
<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>以下片段位于父对话框中:
constructor(
public dialog: MatDialog,
public parentDialogRef: MatDialogRef<ParentDialogComponent>,当用户单击父对话框中的“保存”按钮时,将弹出确认对话框。子确认对话框打开时对父对话框具有引用,以便可以关闭它。
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代码:
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;
}
}我希望这段代码是通用的,这样任何其他组件都可以使用它。
有什么建议吗?
发布于 2022-04-29 20:27:52
解决方案是寻找布尔值真,而不是字符串“true”。现在起作用了。希望其他人能从这篇文章中获益。
https://stackoverflow.com/questions/72047130
复制相似问题