Угловой 4 - Доступ к представлению элемента отца не определен с @ViewChild

1

Мне нужно создать modal для управления ошибками. Поэтому я полагаю, что лучшим решением является поместить этот модал в мой app.component, чтобы я мог использовать один модаль в моем проекте:

<my-dialog #MyErrorDialog>
    ...
</my-dialog>

теперь мне нужно открыть этот модальный компонент во многих компонентах или службах, когда возникает HTTP-код, но с идентификатором ссылки:

@ViewChild('MyErrorDialog') MyErrorDialogReference: MyDialog; 

MyErrorDialogReference в моем дочернем компоненте/службе не определено, потому что модальность находится в компоненте приложения.

Я не хочу использовать @Input/@Output.

Теги:
angular
modal-dialog
viewchild

1 ответ

1
Лучший ответ

Вы можете использовать service как:

ErrorService

public errorMessage = new Subject<string>();
setErrorMessage(value: string) {
    this.errorMessage.next(value);
}

любой другой компонент Notify service об ошибке

constructor(public errorService: ErrorService) { }
setMessage(message) { // call this method whenever you get error
    this.errorService.setErrorMessage(message);
}

Ошибка app.component в компоненте приложения

errorMessage: string;
errorSubscription: Subscription;
constructor(public errorService: ErrorService) { }
ngOnInit() {
    this.errorSubscription = this.errorService.errorMessage.subscribe(
        (message) => {
            this.errorMessage = message;
            // open dialog with message
        }
    );
}
ngOnDestroy() {
    this.errorSubscription.unsubscribe();
}
  • 0
    Спасибо, отлично работает !! :)
  • 0
    рад, что это помогло вам :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню