如何在ngOnDestroy中取消ChangeDetectorRef

时间:2016-11-15 13:10:59

标签: angular typescript ionic2

  ngOnInit() {    
    this.detectChangeInterval = setInterval(
      () => {
        this.detectRef.detectChanges(); // detectRef is type ChangeDetectorRef
      }, 2000);
  }

  // After leaving this page, I got: error_handler.js:47 EXCEPTION: Attempt to use a destroyed view: detectChanges
  ngOnDestroy() {   
    if(this.detectChangeInterval) { 
      clearInterval(this.detectChangeInterval);
    }
  }

我认为异常意味着clearInterval(this.detectChangeInterval);没有取消this.detectRef.detectChanges();的递归调用

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

我的建议是使用不同于默认angular2的生命周期事件。 Ionic2有自己的Page生命周期事件,您可以使用它们。你可以看到那些here(滚动一下)。

ionViewDidLoad() {
   this.detectChangeInterval = setInterval(() => {
      this.detectRef.detectChanges(); // detectRef is type ChangeDetectorRef
   }, 2000);    
}

ionViewWillLeave() {
   if(this.detectChangeInterval) { 
     clearInterval(this.detectChangeInterval);
   }
}