DOM更新尖峰带角度2*ngFor和金色布局
亲爱的Angular 2开发人员同事: 我和我的团队在angular 2应用程序(2.1.1)中面临一个奇怪的性能问题。我们正在使用基于golden-layout.js()的对接布局。它的工作非常出色,拖放动作的渲染也非常流畅 然而,当我们有很多角度组件时(比如说,一个*ngFor有大约2500个元素,每个元素都是一个简单的组件,有两个属性绑定),golden layout的行为会很奇怪: 当我们单击一个角度组件,然后开始拖动时,拖动动作会呈现巨大的尖峰。但是,当我们单击浏览器中的空白区域(而不是任何角度组件的HTML)并开始拖动时,动画将平稳运行 我们的所有组件都使用ChangeDetectionStrategy.OnPush,在可能的情况下,ChangeDetector会分离,并手动触发更新。 我们怀疑angular会在内存中保留类似最后一个“聚焦”组件的内容,并在该聚焦元素为angular组件时执行大量更新动画 这个问题可能来自哪里,或者我们应该寻找什么?因为我们看到,当我们在任何角度组件外单击时,渲染确实可以正常工作,这是有原因的,但我们无法想出正确诊断问题的方法 谢谢你的帮助 编辑:我创建了一个: 这种现象可以再现如下: 初始状态:拖动任意简单组件。动画应该是平滑的。 尖峰:在复杂组件(包含5000个元素)内部单击。然后拖动。动画应使用很少的帧进行渲染。 修复:双击任何简单组件,然后单击一次,然后再次尝试拖动。动画应该再次平滑DOM更新尖峰带角度2*ngFor和金色布局,dom,angular,docking,ngfor,Dom,Angular,Docking,Ngfor,亲爱的Angular 2开发人员同事: 我和我的团队在angular 2应用程序(2.1.1)中面临一个奇怪的性能问题。我们正在使用基于golden-layout.js()的对接布局。它的工作非常出色,拖放动作的渲染也非常流畅 然而,当我们有很多角度组件时(比如说,一个*ngFor有大约2500个元素,每个元素都是一个简单的组件,有两个属性绑定),golden layout的行为会很奇怪: 当我们单击一个角度组件,然后开始拖动时,拖动动作会呈现巨大的尖峰。但是,当我们单击浏览器中的空白区域(而不
修复也可以通过在简单组件中随机点击来实现,我们还没有弄清楚整个事情背后的逻辑。但是,双击和单键点击的效果是一致的(至少在一些64位Windows 10机器上的最新Chrome浏览器中是如此)。我想这至少需要一次点击才能重现。
placeholder (sorry, cannot just post relevant portion)