Я создал контрольный пример для воспроизведения проблемы, которую я вижу, основываясь на документации Routing Angular и live demo foundтам.
Демонстрационная версия была немного изменена, поэтому на рабочем столе браузера запрашиваются уведомления, а в app.component.ts
[откуда-то вставлен код уведомления браузера] отображается простое уведомление.
Обратите вниманиеобработчика уведомлений onclick
ниже.Он просто входит в консоль и переходит к одному из исходных маршрутов приложения.
notification.onclick = function () {
console.log('onclick');
self.router.navigate(['/heroes']);
};
Чтобы воспроизвести проблему, обязательно Открыть в новом окне и разрешите приложению отображать уведомления на рабочем столе при появлении соответствующего запроса.,Уведомление будет показано сразу после предоставления разрешений.При нажатии на уведомление вы заметите, что маршрутизатор переходит на новый URL, но ничего не отображается.Вывод консоли показывает «onclick», как и ожидалось, но не ngOnInit()
.heroes.component.ts
также был изменен для вывода ngOnInit()
, как показано ниже, но этого никогда не происходит.Если бы вы нажали кнопку Heroes
, ngOnInit()
сработал бы так, как ожидалось.
ngOnInit() {
console.log('ngOnInit');
this.getHeroes();
}
После небольшой отладки выясняется, что маршрутизатор перемещается должным образом, компонент heroes
получаетсоздается (как вызывается конструктор), но ngOnInit()
никогда не выполняется.
Похоже, что контекст onclick
уведомления на рабочем столе браузера как-то портит внутренности Angular.Это то, что на самом деле происходит?Это какая-то ошибка Angular?
Я также пытался использовать ng-push , но наблюдается то же поведение.
В моем полном приложении естьодна небольшая разница в поведении.ngOnInit()
вызывается в конце концов, но это занимает до 10 секунд после выполнения конструктора компонента.Кажется, что браузер бездействует, не потребляя ЦП в течение периода ожидания.
Я сбит с толку.Есть идеи?Как получается, что маршрутизация работает нормально, когда кнопка нажата, но она демонстрирует это странное поведение при использовании из обработчика щелчков уведомления на рабочем столе браузера?
Обратите внимание, что я протестировал в последней версии Chrome (67.0.3396.87), Firefox (60.0.2) и Edge (все в Windows 10 с последними обновлениями).