如何从MatDialog获取数据?
问题描述:
我正在关注here中的文档。 我可以将数据传递给对话框,但我没有从中获取数据。 我在.afterClose()。subscribe()上取得未定义的结果。 我错过了什么?我猜在对话框的模板中有一些我需要做的事情,但上面的文档没有提供一个例子。 这里是我的代码:如何从MatDialog获取数据?
import {Component, Inject, OnInit} from '@angular/core';
import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material';
import {MySavior} from '../shared/my-savior';
import {Savior} from '../../savior/shared/savior';
import {SaviorDataService} from '../../savior/shared/savior-data.service';
@Component({
selector: 'app-my-room-savior-select-dialog',
template: 'my data name: {{data.name}}'
})
export class MySaviorSelectDialogComponent {
constructor(public dialogRef: MatDialogRef<MySaviorSelectDialogComponent>,
@Inject(MAT_DIALOG_DATA) public data: any) {}
onClose(): void {
this.dialogRef.close();
}
}
@Component({
selector: 'app-my-room-my-savior',
templateUrl: './my-savior.component.html',
styleUrls: ['./my-savior.component.css']
})
export class MySaviorComponent implements OnInit {
saviors: Savior[] = [];
mySaviors: MySavior[] = [];
constructor(private saviorDataServ: SaviorDataService, public dialog: MatDialog) {}
ngOnInit() {
...
}
openSelectDialog(): void {
const dialogRef = this.dialog.open(MySaviorSelectDialogComponent, {data: {name: 'test'}});
dialogRef.afterClosed().subscribe(result => {
console.log('result ' + result); //i got result undefined
});
}
}
答
我搞清楚后,我发现,我们可以通过对MatDialogRef.close数据()。
onClose(): void {
this.dialogRef.close('pass data here');
}
该文档仅提供onNoClick()函数,偶尔不需要传递任何数据。 onOkClick(),另一方面,我认为应该或多或少像上面的onClose()。我不知道他们为什么不把它包含在文档中。