Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何从任何角度组件访问URL参数?_Angular_Angular Router_Angular Activatedroute - Fatal编程技术网

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']

您读过关于路由的文档吗??这里解释得很好,我的问题是如何从单独的组件中执行此操作。