如何在不同的URL上重用相同的组件实例

时间:2018-04-10 15:00:30

标签: angular

上下文

我想创建一个地图组件,我想在各种URL上重用它。实例化此组件有点耗时,并且每次创建组件时也会使用图块请求来显示地图图像。

问题

当组件嵌套在树中时,如何在不同的URL上重用相同的组件实例?

在下面的stackblitz中,每次切换路径时都会实例化ReusableComponent

https://stackblitz.com/edit/angular-sr9stk?file=app%2Freusable.component.ts

注意

我知道RouteReuseStrategy,但这仅适用于顶级组件(即路由设置中定义的)

使用角度5.2

1 个答案:

答案 0 :(得分:3)

有点像黑客,但这是我让它工作的唯一方式

https://stackblitz.com/edit/angular-13dj9k

在服务中创建Component作为ComponentRef,然后将其插入到指令的ViewContatiner中,该指令存在于每个路由上。 hacky部分是我必须在导航之前监听NavigationStart事件以分离组件,以便可以在下一个路径上重新连接。