问题描述
我有一个包含多个组件的应用程序,通过<router-outlet>
加载。 这些组件中的每一个都包含地图,这意味着每次单击链接时,都会在<router-outlet>
中创建一个新的谷歌地图(但应用程序中一次只有一张地图)。
似乎每次创建地图时,它都会在 DOM 元素上添加大量事件侦听器,但在销毁时不会删除它们。 然后,经过几个链接后,应用程序非常缓慢,尤其是在输入表单时。
我不确定这是否是一个错误,或者我是否应该在应用程序中只使用一张地图,并根据我打开/关闭的组件更新其值。
当前行为
应用程序/表单输入输入非常慢,地图创建的事件侦听器不会被删除。
预期/期望行为
应删除事件侦听器,并且不应减慢应用程序的速度。
angular2 和 angular2-google-maps 版本
Angular 2 rc5 & angular2-google-maps 0.12.2
应删除事件侦听器,并且不应减慢应用程序的速度。
是的,我想我们删除了一些事件侦听器,但我不确定我们是否已经删除了所有侦听器。
2) 我们应该在 Angular Zone 之外运行 google maps 调用,因为我们订阅了 google maps 事件并已经在该区域中运行它。 这也应该提供性能改进。
我有类似@gnujeremie 的问题。 当我创建地图然后显示一些折线时,一切顺利(我可以在不同折线的显示之间切换而不会遇到任何麻烦),直到我转到某个没有地图组件的页面。 当我返回带有地图的页面时,页面和地图的工作速度非常慢。
当我不显示任何折线时,问题就会消失。
对我来说临时解决方案可以使这个元素在可见性中全局隐藏 - 所以它只会被创建一次 - 但这并不理想......
此问题已自动标记为过时,因为它最近没有活动。 如果没有进一步的活动发生,它将被关闭。 感谢你的贡献。
最有用的评论
是的,我想我们删除了一些事件侦听器,但我不确定我们是否已经删除了所有侦听器。
2) 我们应该在 Angular Zone 之外运行 google maps 调用,因为我们订阅了 google maps 事件并已经在该区域中运行它。 这也应该提供性能改进。