mat dialogから親コンポーネントにデータを送る

目次

ダイアログを閉じたときにデータを送る

ダイアログコンポーネント

close() {

    this.dialogRef.close(data);
}


constructor(
    public dialogRef: MatDialogRef<MyDialogComponent>,
    @Inject(MAT_DIALOG_DATA) public data: DialogData
  ) { }

親コンポーネント


openDialog() {

    this.dialogRef = this.myDialog.open(MyDialogComponent, {
      data: {}
    });

    this.dialogRef.afterClosed().subscribe(
        data => console.log("Dialog output:", data)
    );    
}

constructor(
    private myDialog: MatDialog,
) { }

ダイアログを閉じないでデータを送る

ダイアログコンポーネント


@Output() submitClicked = new EventEmitter<any>();

sendMessageToParent() {
    const data = 'Your data';
    this.submitClicked.emit(data);
}

親コンポーネント

private dialogRef
private dialogSubmitSubscription

openDialog() {

    this.dialogRef = this.myDialog.open(MyDialogComponent, {
      data: {}
    });

    this.dialogSubmitSubscription = this.DialogRef.componentInstance.submitClicked
    .subscribe(result => {
      console.log('Got the data!', result);
    });
}

closeDialog() {
    this.dialogSubmitSubscription.unsubscribe();
    this.dialogRef.close()
}

constructor(
    private myDialog: MatDialog,
) { }