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

问题描述 投票:0回答:2

我有分屏设计。我只想在激活子路由时从父路由访问文件夹ID。下面的工作是为我获取正确的参数,但在我只显示父路由的初始加载时,我收到一个控制台错误:

无法读取null的属性'params'

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

一旦孩子被激活,有没有办法只激活上面的东西?

angular routes angular-activatedroute
2个回答
0
投票

你可以试试

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

0
投票

您可以订阅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'];
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.