Angular 2 setinterval()继续在其他组件上运行

时间:2016-05-09 13:06:43

标签: angular

我在一个组件中有以下方法:

ngOnInit()
        {
            this.battleInit();
            setInterval(() => {
                this.battleInit(); 
                }, 5000);
        }

现在,我只需要在用户位于此特定组件中时运行此间隔,这意味着当用户离开此组件时,间隔将停止。

目前,this.battleInit()每5秒执行一次,即使用户离开此页面也是如此。

简短问题:当用户离开(通过路由)到另一个组件时,如何停止setInterval()

3 个答案:

答案 0 :(得分:72)

您需要在组件的clearInterval挂钩方法中使用ngOnDestroy方法。为此,您需要使用setInterval方法保存返回的值。

以下是一个示例:

ngOnInit() {
  this.battleInit();
  this.id = setInterval(() => {
    this.battleInit(); 
  }, 5000);
}

ngOnDestroy() {
  if (this.id) {
    clearInterval(this.id);
  }
}

答案 1 :(得分:0)

below code are write <br> 
ngOnInit() {
  this.battleInit();
  this.id = setInterval(() => {
    this.battleInit(); 
  }, 5000);
}

ngOnDestroy() {
  if (this.id) {
    clearInterval(this.id);
  }
}

this.id表示它触发的迭代次数

答案 2 :(得分:0)

每40秒

 polling: any;

  ngOnInit() {

    this.consulta();
    this.pollData();
  }

 pollData () {
    this.polling = setInterval(() => {
    this.consulta();

  },40*1000)

 ngOnDestroy() {
    clearInterval(this.polling);
  }