Angular 如何从任何角度组件访问URL参数?
我有一个应用程序,其组件结构如下:Angular 如何从任何角度组件访问URL参数?,angular,angular-router,angular-activatedroute,Angular,Angular Router,Angular Activatedroute,我有一个应用程序,其组件结构如下: 1. Fam.Component 1.1. Header.Component <------ Unable access param from here 1.2. ParentGrid.Component 1.2.1. ChildGrid.Component 1.2.1.1 GrandChildGrid.Component <----- Can access from here!! 这将基本上显示第一个父母的第23个孩子的所有孙子女 我的路由配置
1. Fam.Component
1.1. Header.Component <------ Unable access param from here
1.2. ParentGrid.Component
1.2.1. ChildGrid.Component
1.2.1.1 GrandChildGrid.Component <----- Can access from here!!
这将基本上显示第一个父母的第23个孩子的所有孙子女
我的路由配置中此URL的路径如下所示:
http://onebigfamily.com/Fam/Parents/1/Children/23/GrandChildren
Fam/Parents/:parentId/Children/childId:/GrandChildren
我可以通过执行一个简单的this.route.snapshot.params['childId']
(当然,对于父ID,必须向上遍历路由树),从我的孙子
组件导航ActivatedRoute
来访问childId
和parentId
参数值
现在进入问题…
如何从标题组件访问:childId
和:parentId
?当我执行this.route.snapshot.params['childId']
时,这些值显示为未定义
只要父ID和子ID在URL中,我就需要访问它们,无论哪个组件拥有控制权。因为要检查不同于@your header creation time的路由参数,您必须订阅路由更改并从更改事件中获取参数。在标题组件中,您必须执行以下操作:
this.route.paramMap
.subscribe(params => {
//assign params here
});
其中route
被注入ActivatedRoute
来自文档
params是包含必需和可选参数的可观察对象
特定于路线的参数。改用paramMap
它不适用于您的原因是因为您的头组件(父组件)的创建时间与子组件的创建时间不同,因此路由快照与此类似-从创建头开始创建路由快照。您可以在路由变量中获取url参数
this.route.params.subscribe(params => {
var parentId = params['parentId'];
var childId = params['childId'];
});
您可以通过
firstChild
访问子路由,因此(取决于您的路由配置),它可能如下所示:
http://onebigfamily.com/Fam/Parents/1/Children/23/GrandChildren
Fam/Parents/:parentId/Children/childId:/GrandChildren
this.route.snapshot.firstChild.firstChild.params['childId']
您读过关于路由的文档吗??这里解释得很好,我的问题是如何从单独的组件中执行此操作。