突破角度区

时间:2017-12-13 21:45:32

标签: angular zone

这是一个与Angular无关的应用程序。

project.ts

export class Project {

   private ctx: CanvasRenderingContext2D;

   constructor(private canvas: HTMLCanvasElement){

      this.ctx = canvas.getContext('2d');

      requestAnimationFrame(this.render);

   }

   private render = (): void => {

      requestAnimationFrame(this.render);

   }

} 

肯定是相当无聊,但它是面包和黄油动画。就我而言,我在使用canvasContext.stroke()的画布上进行渲染时计算生成线条,但这无关紧要。

我还有另一个Angular组件将运行上面的应用程序。没有必要使用Angular Components的所有样板代码来讨论这个问题,但最后,我有一个画布,在这里,我试图在Angular Zone之外运行整个项目

ngAfterViewInit(){

    this.zone.runOutsideAngular(() => {
        this.project = new Project(this.canvas);
    });

}

此时,我希望该项目的Project,特别是requestAnimationFrame与Angular Zone无关。

当我查看开发工具时。我明白了。

zone calls

这里到底发生了什么?

  1. 我的渲染方法是否仍在角度区内运行?
  2. 为什么?
  3. 这是如何解决的?
  4. 我正在寻找澄清我误解开发工具,或者我想要做的事情是不可能的(尚未)。

    感谢阅读。

0 个答案:

没有答案