Angular - как подписаться на параметры дочернего маршрута, только если дочерний маршрут активирован - PullRequest
0 голосов
/ 09 декабря 2018

У меня раздельный дизайн экрана.Я хотел бы получить доступ к идентификатору папки из родительского маршрута, только когда дочерний маршрут активирован.Приведенное ниже работает для получения правильных параметров для меня, но при начальной загрузке, когда я только отображаю родительский маршрут, я получаю консольную ошибку:

Невозможно прочитать свойство 'params' из null

this.activatedRoute.firstChild.params.subscribe((urlParameters) => {
  this.folder_id = urlParameters['folderId'];
});

Можно ли активировать вышеуказанное только после активации ребенка?

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

Вы можете подписаться на изменение routeParams, но сработать только тогда, когда дочерний элемент существует и имеет то, что вам нужно. ABOSes версия не будет работать, потому что она не будет делать подписку без firstChild, поэтому, когда вы действительно перейдете к firstChild, подписка не сработает.

Моя версия создаст подписку, чтобудет фильтровать действительные события.Имейте в виду, это, вероятно, будет лучшим способом сделать это: https://stackoverflow.com/a/48979356/1980151

this.route.params.subscribe(() => {
    if (this.route.firstChild && this.route.firstChild.snapshot.params['folderId']) {
        this.folderId = +this.route.firstChild.snapshot.params['folderId'];
    }
});
0 голосов
/ 09 декабря 2018

Вы можете просто попробовать

 if(this.activatedRoute.firstChild) 
   this.activatedRoute.firstChild.params.subscribe((urlParameters) => { 
     this.folder_id= urlParameters['folderId']; 
   });
...