我有一个不寻常的问题,即我打开的 MatDialog 组件不会在我的 Angular 应用程序中关闭。我在调用组件中不使用 HTML 作为视图,而是使用 SVG,它的处理方式略有不同。不幸的是,我无法弄清楚问题所在。
这是调用组件:
调用组件.ts
constructor(public dialog: MatDialog) {}
openDetailsDialog() {
const dialogRef = this.dialog.open(NodeDetailsComponent, {
width: '250px',
data: {componentTitle: this.componentTitle},
backdropClass: 'node-details-backdrop'
});
dialogRef.afterClosed().subscribe(result => {
console.log("NodeDetailsDialog closed.");
this.componentTitle = result;
});
}
调用组件.svg
<svg:rect [class]="classes" x="50" y="20" rx="20" ry="20"></svg:rect>
<svg:g ng-node-content></svg:g>
<svg (click)="openDetailsDialog()">
<g>
<svg:rect class="test" x="110" y="75" rx="5" ry="5"></svg:rect>
<svg:text x="119" y="90" font-family="Verdana" font-size="15" fill="black">O</svg:text>
</g>
</svg>
<svg:g [baseNode]="baseNode" ng-node-controls></svg:g>
openDetailsDialog() 方法打开对话框,该对话框可以正常工作。只是它不能关闭。现在跟随被调用的组件:
节点详细信息组件.ts
export class NodeDetailsComponent {
constructor(
public dialogRef: MatDialogRef<NodeDetailsComponent>,
@Inject(MAT_DIALOG_DATA) public data: DialogData
) {}
onNoClick(): void {
this.dialogRef.close();
}
}
NodeDetailsComponent.html
<h1 mat-dialog-title>{{data.componentTitle}}</h1>
<div mat-dialog-content>
<p></p>
</div>
<div mat-dialog-actions>
<button mat-button (click)="onNoClick()">Close</button>
</div>
如果需要更多信息来调试它,那么我很乐意提交它!