Angular (单击)如果来自函数,则在数组类型的元素上的*ngFor内断开

Angular (单击)如果来自函数,则在数组类型的元素上的*ngFor内断开,angular,Angular,在这里,我复制了一个奇怪的边缘案例。这可能取决于pixijs或者webgl,因为使用pixijs时会发生这种情况 请注意,您可以单击列表中的所有元素,但一旦开始使用pixijs(只需单击按钮),单击将停止处理array类型的元素。奇怪的是,它仍然适用于所有其他元素。更奇怪的是,如果不是使用函数返回数组,而是使用内联数组,则所有函数都会按预期工作 有什么想法吗 应用程序组件.ts 打断我 破碎的 点击:{点击| json} 它坏了 {{n}json} 它起作用了 {{n}json} app.co

在这里,我复制了一个奇怪的边缘案例。这可能取决于pixijs或者webgl,因为使用pixijs时会发生这种情况

请注意,您可以单击列表中的所有元素,但一旦开始使用pixijs(只需单击按钮),单击将停止处理array类型的元素。奇怪的是,它仍然适用于所有其他元素。更奇怪的是,如果不是使用函数返回数组,而是使用内联数组,则所有函数都会按预期工作

有什么想法吗

应用程序组件.ts

打断我
破碎的
点击:{点击| json}
它坏了
{{n}json}
它起作用了
{{n}json}
app.component.html

从'angular2/core'导入{Component};
@组成部分({
选择器:“我的应用程序”,
templateUrl:“./app/app.component.html”
})
导出类AppComponent{
点击“”;
渲染器;
breakIt(){
this.renderer=PIXI.autodetectedrenderer(200200,{backgroundColor:0x1099bb});
}
ns(){
返回[2,4],'ciao',4,true];
}
单击(n){
这个.clicked=n;
}
}

有趣的是,您得到了无限的变化循环。之所以出现这种情况,是因为每次从
ns()
PIXI返回新数组时,AutoDetectTrenderer
都会以某种方式触发角度变化事件


尝试设置changeDetection:ChangeDetectionStrategy.OnPush-它可以工作。所以我猜angular会检测渲染器对象中的周期性更改,并开始处理更改,并且不能停止,因为每次模板值都会发生变化!=ns()方法结果。

问题是由

ns(){
返回[2,4],'ciao',4,true];
}


我猜PIXI.autodetectedrenderer每秒有一个60次的ticker(超时),这将导致一个更改事件,这将解释为什么页面会不断重新呈现。但这并不能解释为什么click事件不仅仅对函数返回的“数组数组”起作用。方法每次返回新数组,因此每1/60秒调用
ns()
,以获取其值,并与当前模板值(以前由ns()方法返回)进行比较,但显然值并不严格相等,它们是不同的对象。
ns()。