Angular-仅在激活子路径时如何订阅子路径参数

时间:2018-12-09 12:01:43

标签: angular routes angular-activatedroute

我有一个分屏设计。我只想在激活子路由时从父路由访问文件夹ID。下面的方法可以为我获取正确的参数,但是在仅显示父路径的初始负载下,出现控制台错误:

  

无法读取null的属性“ params”

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

有没有一种方法只能在孩子被激活后才激活以上内容?

2 个答案:

答案 0 :(得分:0)

您可以简单地尝试

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

答案 1 :(得分:0)

您可以订阅routeParams更改,但仅在child存在并且具有所需条件时才触发。 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'];
    }
});