В настоящее время я пытаюсь научить себя программированию и Angular, создав небольшое приложение для себя. В своем приложении я сделал сервис-оболочку для Angular Material ModalDialog. Мое приложение представляет собой гибрид Angular и AngularJS (я работал над этим в течение некоторого времени).
Сервис-оболочка выглядит так:
export class ModalDialogWrapperService {
constructor(private dialog: MatDialog, private zone: NgZone) {
}
openWarningWindow(warning) {
this.zone.run(() => {
const dialogRef = this.dialog.open(WarningComponent, {
data: warning,
panelClass: 'dialog--warning'
});
dialogRef.afterClosed().subscribe(() => {
console.log('I need access to this');
});
});
}
Это замечательно, так как в угловом компоненте я могу поднять модал, просто импортировав мой сервис и вызвав метод следующим образом, вот компонентный метод, который использует сервис:
// component code
public raiseWarning(warning: any): void {
this.modalDialogWrapperService.openWarningWindow({
type: warning.type,
id: warning.id,
tags: warning.tags
});
}
Это здорово, но мне нужно получить доступ, когда диалог закрыт и данные, которые он возвращает. Я могу перехватить это в моем сервисе, см. console.log
, но я не могу получить доступ к этому в компоненте. Должен ли я добавить код в свой компонент, как
// component code
public raiseWarning(warning: any): void {
const dialogRef = this.modalDialogWrapperService.openWarningWindow({
type: warning.type,
id: warning.id,
tags: warning.tags
});
dialogRef.afterClosed().subscribe(() => {
console.log('I am in the component');
});
}
Я получаю неопределенную ошибку, мой вопрос, как мне выставить afterClosed().subscribe
из моей службы оболочки компоненту. Любые советы высоко ценится. Нужно ли return
dialogRef
из сервиса как то так?
openWarningWindow(warning) {
this.zone.run(() => {
// const dialogRef =
return this.dialog.open(WarningComponent, {
data: warning,
panelClass: 'dialog--warning'
});
});
}
Я пробовал это с измененным Кодом компонента, но он не работал. Я получаю ошибку TypeError: Cannot read property 'afterClosed' of undefined