如何根据 Angular 中确认子对话框中选择的答案关闭父对话框?
How to close parent dialog depending on selected answer in confirm child dialog in Angular?
我正在尝试根据 Angular 中对子确认垫对话框的回答关闭父垫对话框。子确认对话框显示“您有未保存的更改。您确定要关闭吗?”如果用户单击“是”,那么两个对话框都应该关闭。如果他们说不,那么应该只关闭确认对话框。 NO 有效但 YES 无效。
这是带有两个按钮的模板
<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,但当用户选择 YES 时父对话框无法关闭。
这是确认对话框.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;
}
}
我希望此代码是通用的,以便它可以被任何其他组件使用。
建议?
解决方案是查找布尔值 true 而不是字符串 'true'。现在可以了。希望其他人能从中受益 post.
我正在尝试根据 Angular 中对子确认垫对话框的回答关闭父垫对话框。子确认对话框显示“您有未保存的更改。您确定要关闭吗?”如果用户单击“是”,那么两个对话框都应该关闭。如果他们说不,那么应该只关闭确认对话框。 NO 有效但 YES 无效。
这是带有两个按钮的模板
<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,但当用户选择 YES 时父对话框无法关闭。
这是确认对话框.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;
}
}
我希望此代码是通用的,以便它可以被任何其他组件使用。
建议?
解决方案是查找布尔值 true 而不是字符串 'true'。现在可以了。希望其他人能从中受益 post.