我有分屏设计。仅当激活子路由时,我想从父路由访问文件夹 ID。以下内容可以为我获取正确的参数,但是在我只显示父路由的初始加载中,我收到控制台错误:
无法读取 null 的属性“参数”
this.activatedRoute.firstChild.params.subscribe((urlParameters) => {
this.folder_id = urlParameters['folderId'];
});
有没有办法只在孩子被激活后才激活上述内容?
我有分屏设计。仅当激活子路由时,我想从父路由访问文件夹 ID。以下内容可以为我获取正确的参数,但是在我只显示父路由的初始加载中,我收到控制台错误:
无法读取 null 的属性“参数”
this.activatedRoute.firstChild.params.subscribe((urlParameters) => {
this.folder_id = urlParameters['folderId'];
});
有没有办法只在孩子被激活后才激活上述内容?
你可以简单地尝试
if(this.activatedRoute.firstChild)
this.activatedRoute.firstChild.params.subscribe((urlParameters) => {
this.folder_id= urlParameters['folderId'];
});
您可以订阅 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'];
}
});