Я использую Angular 7 и Angular Material для отображения диалогового окна. Я написал сервис (modal.service) для отображения диалогового окна, но я хотел бы передать dialogReference из MatDialog.open обратно вызывающему компоненту, чтобы он мог выполнять любую постобработку после закрытия диалога.
Вот мой модал.сервис:
import { ReviewModalComponent } from './../components/review-modal/review-modal.component';
import { Injectable } from '@angular/core';
import { DataService } from 'src/app/services/data.service';
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
@Injectable({
providedIn: 'root'
})
export class ModalService {
dialogRef : any;
constructor(private dataService: DataService, private dialog: MatDialog) { }
showReviewModal(id, mode){
this.dataService.getReview(id).subscribe(
(review:any) => {
this._openReviewModal(id, mode, review);
}
);
}
_openReviewModal(id, mode, review){
this.dialogRef = this.dialog.open(ReviewModalComponent, {width: '500px', data: { id: id, mode: mode, review: review } })
.afterClosed().subscribe(result => {alert('closed')});
}
}
У меня вопрос, как я могу передать this.dialogRef обратно в мой вызывающий компонент, чтобы я мог подписаться на .afterClosed там?
Вот мой вызывающий компонент (или его часть, во всяком случае):
openReviewDialog(id): void {
this.modalService.showReviewModal(id, 'edit');//.subscribe(x=>alert(x));
}
Спасибо за вашу помощь!