61 votes

Angular 2 setinterval () continue de fonctionner sur un autre composant

J'ai la méthode suivante dans un composant:

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

Maintenant, je dois exécuter cet intervalle uniquement si l'utilisateur se trouve dans ce composant spécifique, ce qui signifie que lorsque l'utilisateur s'éloigne de ce composant, l'intervalle s'arrête.

Actuellement, this.battleInit() est exécuté toutes les 5 secondes, même après que l'utilisateur a quitté cette page.

Question courte: Comment puis-je arrêter setInterval() lorsque l'utilisateur s'éloigne (par routage) vers un autre composant?

169voto

thierry templier Points 998

Vous devez utiliser clearInterval méthode pour cela dans le ngOnDestroy méthode de crochet de votre composant. Pour cela, vous devez enregistrer la valeur retournée par la méthode setInterval .

Voici un exemple:

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X