2016-05-09 26 views
18

Ho il seguente metodo in un componente:angolare 2 setInterval() continuo in esecuzione su un altro componente

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

Ora, ho bisogno di eseguire questo intervallo solo se l'utente è in questo componente specifico, ciò significa che quando l'utente si allontana da questo componente, l'intervallo si interrompe.

Attualmente, this.battleInit() viene eseguito ogni 5 secondi, anche dopo che l'utente si è allontanato da questa pagina.

Breve domanda: Come posso smettere di quando l'utente si allontana (tramite il routing) su un altro componente?

risposta

32

È necessario utilizzare il metodo clearInterval all'interno del metodo di aggancio del componente ngOnDestroy. Per questo è necessario salvare il valore restituito con il metodo setInterval.

Ecco un esempio:

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

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

Grazie! Cosa restituirà 'console.log (this.id)'? – TheUnreal

+1

Un identificativo associato alla chiamata 'setInterval' per fermarlo ... –

Problemi correlati