Мне нужно создать modal для управления ошибками. Поэтому я полагаю, что лучшим решением является поместить этот модал в мой app.component, чтобы я мог использовать один модаль в моем проекте:
<my-dialog #MyErrorDialog>
...
</my-dialog>
теперь мне нужно открыть этот модальный компонент во многих компонентах или службах, когда возникает HTTP-код, но с идентификатором ссылки:
@ViewChild('MyErrorDialog') MyErrorDialogReference: MyDialog;
MyErrorDialogReference в моем дочернем компоненте/службе не определено, потому что модальность находится в компоненте приложения.
Я не хочу использовать @Input/@Output.
Вы можете использовать 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();
}