Код компонента не вызывается после навигации в Angular 4 - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь реализовать обработчик ошибок, используя Angular 5.0.0.

В обработчике ошибок, реализующем интерфейс ErrorHandler, я изменяю текущий маршрут на маршрут компонента ошибки:

router.navigate(['/error'], {queryParams: errorWithContextInfo});

URL-адрес в панели браузера изменяется, отображается HTML-код компонента, вызывается constructor, не вызывается onInit, переменные-члены не доступны в представлении (всегда пустые, даже если они общедоступны и имеют значение по умолчанию).

Затем, когда я нажимаю F5, маршрут ошибки загружается правильно, все переменные-члены, измененные в конструкторе на ловушке onInit, становятся доступными в представлении, как и ожидалось.

Как я могу исправить это поведение? (queryParams должен быть доступен в представлении компонента сразу после навигации).

1 Ответ

0 голосов
/ 01 мая 2018

Вы можете принудительно обнаружить изменения, когда навигация завершится с помощью NgZone.

Вставьте его в конструктор:

import {NgZone} from '@angular/core';
import {Router} from '@angular/router';
constructor(private router: Router, private zone: NgZone) {}

, затем вызовите навигационное действие так:

this.zone.run(() => router.navigate(['/error'], {queryParams: params}));

Подробнее см. Angular 2 ngOnInit и , эта проблема .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...