【发布时间】:2020-02-07 22:12:47
【问题描述】:
我在我的项目中使用 Openlayers 6 和 Angular 8。 到目前为止,我注意到每当我将鼠标悬停在 Openlayers 地图上时,地图所在的 Angular 组件都会重新渲染。
我的问题是如何让父组件在悬停时停止重新渲染。因为它会减慢应用程序的速度。我的项目中有一个更大的组件,因此重新渲染所有内容,这会使应用程序本身变慢。
为此,我创建了一个 repo 来证明这一点:https://github.com/petrovichm/angular-openlayers-hover-problem。 在此示例中,我在 html 中添加了一个方法,该方法将在运行时记录下来,从而概述了角度重新渲染组件的次数。
我想使用 plunker 或 codesanbox 创建在线可运行文件,但是当我制作此示例窗口时,由于重新渲染中存在无限循环,导致它们无法使用,所以当我在本地运行此项目时,它并没有真正发生这种情况,它只发生在悬停时
谢谢。
【问题讨论】:
-
您是否尝试过使用 on push 更改检测策略来防止这种情况?
@Component({ ..., changeDetection: ChangeDetectionStrategy.OnPush })这应该可以防止您正在谈论的问题。 -
是的,它仍然会重新渲染。
标签: angular openlayers angular-components openlayers-6 angular-renderer