2016-05-09 10 views
18

を実行し続ける:角度2のsetInterval()私は1つのコンポーネントで次のメソッドを持っている他のコンポーネントに

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

さて、私は、ユーザーがあることを意味し、この特定のコンポーネントである場合にのみ、この間隔を実行する必要がありますユーザーがこのコンポーネントから移動すると、間隔が停止します。

現在、ユーザーがこのページから移動した後でも、this.battleInit()が5秒ごとに実行されます。

短い質問:別のコンポーネントに移動する(ルーティングする)ときに、setInterval()を停止するにはどうすればよいですか?

答えて

32

コンポーネントのngOnDestroyフックメソッド内でclearIntervalメソッドを使用する必要があります。このためには、戻り値をsetIntervalメソッドで保存する必要があります。ここで

はサンプルです:

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

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

ありがとう! 'console.log(this.id)'は何を返しますか? – TheUnreal

+1

それを止めるための 'setInterval'呼び出しに関連付けられた識別子... –

関連する問題