2017-11-11 47 views
0

我正在关注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 
    }); 
    } 

} 

回答

1

我搞清楚后,我发现,我们可以通过对MatDialogRef.close数据()。

onClose(): void { 
    this.dialogRef.close('pass data here'); 
} 

该文档仅提供onNoClick()函数,偶尔不需要传递任何数据。 onOkClick(),另一方面,我认为应该或多或少像上面的onClose()。我不知道他们为什么不把它包含在文档中。