Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DOM更新尖峰带角度2*ngFor和金色布局_Dom_Angular_Docking_Ngfor - Fatal编程技术网

DOM更新尖峰带角度2*ngFor和金色布局

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的行为会很奇怪: 当我们单击一个角度组件,然后开始拖动时,拖动动作会呈现巨大的尖峰。但是,当我们单击浏览器中的空白区域(而不

亲爱的Angular 2开发人员同事:

我和我的团队在angular 2应用程序(2.1.1)中面临一个奇怪的性能问题。我们正在使用基于golden-layout.js()的对接布局。它的工作非常出色,拖放动作的渲染也非常流畅

然而,当我们有很多角度组件时(比如说,一个*ngFor有大约2500个元素,每个元素都是一个简单的组件,有两个属性绑定),golden layout的行为会很奇怪: 当我们单击一个角度组件,然后开始拖动时,拖动动作会呈现巨大的尖峰。但是,当我们单击浏览器中的空白区域(而不是任何角度组件的HTML)并开始拖动时,动画将平稳运行

我们的所有组件都使用ChangeDetectionStrategy.OnPush,在可能的情况下,ChangeDetector会分离,并手动触发更新。 我们怀疑angular会在内存中保留类似最后一个“聚焦”组件的内容,并在该聚焦元素为angular组件时执行大量更新动画

这个问题可能来自哪里,或者我们应该寻找什么?因为我们看到,当我们在任何角度组件外单击时,渲染确实可以正常工作,这是有原因的,但我们无法想出正确诊断问题的方法

谢谢你的帮助

编辑:我创建了一个:

这种现象可以再现如下:

初始状态:拖动任意简单组件。动画应该是平滑的。 尖峰:在复杂组件(包含5000个元素)内部单击。然后拖动。动画应使用很少的帧进行渲染。 修复:双击任何简单组件,然后单击一次,然后再次尝试拖动。动画应该再次平滑


修复也可以通过在简单组件中随机点击来实现,我们还没有弄清楚整个事情背后的逻辑。但是,双击和单键点击的效果是一致的(至少在一些64位Windows 10机器上的最新Chrome浏览器中是如此)。

我想这至少需要一次点击才能重现。
 placeholder (sorry, cannot just post relevant portion)