Angular 7更改检测:NgZone.onMicrotaskEmpty问题

时间:2019-02-15 07:10:34

标签: angular typescript chart.js angular-changedetection

我在angular应用程序中使用chart.js,并使用来自API端点的数据绘制图表。

ngOnInit(): void {
this._route.params.subscribe(p => {
  let id: number = +this._route.snapshot.params["id"];
  this.busy = this._awpsService
  .getOutcomeItem("years", id).subscribe(data => {
      this.years = data;
      this.selYear = this.years[0];

      this.ngZone.onMicrotaskEmpty.first.subscribe(() => {
        $("#year").selectpicker();
        $(window).resize();
      });

      this.getProjectItems(id);

    });
});
}

上面的代码在angular 4上运行良好,但是升级到angular 7之后,我不得不将代码更改为

this.ngZone.onMicrotaskEmpty.subscribe(() => {
            $("#year").selectpicker();
            $(window).resize();
});

因为.first的角度为7。这增加了CPU利用率并导致应用程序崩溃。 ngZone.onMicrotaskEmpty.first已在我的应用程序中广泛使用,我不知道如何正确地进行更改检测。我也尝试过这种方式

this.ngZone.onMicrotaskEmpty.subscribe({
        next: () => {
          this.ngZone.run(() => {
            $('#year').selectpicker();
            $(window).resize();
          });
        }
});

但是没有运气。有人可以帮助我吗? 谢谢

0 个答案:

没有答案