Angular 如何获取路由组件的父/主机
假设我们有具有该模板的ComponentA: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
<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(…)
,以获得有关路由更改的通知。