Следуя одному из превосходных руководств Тодда Мотто (https://toddmotto.com/dynamic-page-titles-angular-2-router-events) Я столкнулся с ситуацией, которую не могу объяснить.
Вот код:
this.router.events
.filter((event) => event instanceof NavigationStart)
.map(() => this.activatedRoute)
.map((route) => {
console.log('route pre-while: ', route); // Shows ActivatedRoute object
console.log('pre-while route child: ', route.firstChild); // null
while (route.firstChild) {
console.log('while route: ', route);
route = route.firstChild;
}
console.log('post while route: ', route);
return route;
})
.subscribe((elem) => {
console.log('elem: ', elem);
});
В этом блоке кода оператор журнала route pre-while показывает объект ActivatedRoute в консоли Chrome. Если я разверну объект в окне консоли Chrome, я могу щелкнуть атрибут firstChild
и увидеть другой объект ActivatedRoute
, как я и ожидал. Однако проблема в том, что второй оператор журнала «pre-while route child» выводит null
на консоль. Кроме того, цикл WHILE никогда не выполняется, потому что route.firstChild
оценивается как null
. Кто-нибудь может объяснить мне, почему это??? Почему я могу зарегистрировать объект и увидеть firstChild
, но сразу же получить null при попытке доступа к нему?