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 如何获取路由组件的父/主机_Angular_Angular2 Routing - Fatal编程技术网

Angular 如何获取路由组件的父/主机

Angular 如何获取路由组件的父/主机,angular,angular2-routing,Angular,Angular2 Routing,假设我们有具有该模板的ComponentA: <div> <router-outlet></router-outlet> </div> 组件A有routeConfig路由到组件B 如何从路由组件B获取组件A 我试图将@Host注入ComponentB,但出现异常。路由器使用DynamicComponentLoader添加组件。此类组件的功能有限(无法传递@Input(),无法使用@Host()) 您可以使用共享服务,其中Co

假设我们有具有该模板的ComponentA:

 <div>
       <router-outlet></router-outlet>
 </div>

组件A有routeConfig路由到组件B

如何从路由组件B获取组件A


我试图将@Host注入ComponentB,但出现异常。

路由器使用
DynamicComponentLoader
添加组件。此类组件的功能有限(无法传递
@Input()
,无法使用
@Host()

您可以使用共享服务,其中
ComponentA
将自身传入,而
ComponentB
可以读取值


这里解释了一个类似的用例。服务不必是全球性的。也只能通过将其添加到
ComponentA
providers:[MySharedService]
而不是链接答案中所示的
bootstrap()
来在父级和子级之间共享。是否建议扩展RouterOutlet并管理路由映射以跟踪路由更改?我发现很难知道路由的组件树是什么。扩展
RouterOutlet
似乎是常见的做法,我自己还没有做过。另一种方法是创建共享服务,注入
构造函数(router:router)
并订阅
router.subscribe(…)
,以获得有关路由更改的通知。