Angular - как подписаться на параметры дочернего маршрута, только если дочерний маршрут активирован
У меня есть разделенный дизайн экрана. Я хотел бы получить доступ к идентификатору папки из родительского маршрута, только когда дочерний маршрут активирован. Ниже приведены правильные параметры для меня, но при начальной загрузке, когда я только отображаю родительский маршрут, я получаю консольную ошибку:
Невозможно прочитать свойство 'params' из null
this.activatedRoute.firstChild.params.subscribe((urlParameters) => {
this.folder_id = urlParameters['folderId'];
});
Есть ли способ активировать вышеуказанное только после активации ребенка?
1 ответ
Ты можешь просто попробовать
if(this.activatedRoute.firstChild)
this.activatedRoute.firstChild.params.subscribe((urlParameters) => {
this.folder_id= urlParameters['folderId'];
});
Вы можете подписаться на изменение routeParams, но сработать только тогда, когда дочерний элемент существует и имеет то, что вам нужно. Версия ABOSes не будет работать, потому что она не создаст подписку без firstChild, поэтому, когда вы действительно перейдете к firstChild, подписка не сработает.
Моя версия создаст подписку, которая отфильтрует действительные события. Имейте в виду, это, скорее всего, будет лучшим способом сделать это: /questions/31258142/activatedroute-podpisatsya-na-pervyij-dochernij-nablyudatel-parametrov/31258161#31258161
this.route.params.subscribe(() => {
if (this.route.firstChild && this.route.firstChild.snapshot.params['folderId']) {
this.folderId = +this.route.firstChild.snapshot.params['folderId'];
}
});