javascript - Avsluta intervallet när rutten ändras i Angular 2
Jag startar en timer i en Angular 2-komponent som ligger inne i en routerutgång.
setInterval(() => {
...
}, 10000);
När jag lämnar rutten där komponenten är inbäddad slutar inte timern. Hur kan jag åstadkomma det?
Svar #1
Du skulle kunna rensa intervallet från den här hooken. Min styrs från komponenten/vyn.
export classTestInterval implements OnInit, OnDestroy{
public timerInterval:any;
ngOnInit(){
// Need interval scope in the component could be from somewhere else, but we need scope to be able to clear it on destruction of component.
this.timerInterval = setInterval(function(){...},10000);
}
ngOnDestroy() {
// Will clear when component is destroyed e.g. route is navigated away from.
clearInterval(this.timerInterval);
}
}
Svar #2
Detta borde göra det:
routerOnActivate() {
this.timer = setInterval(()=>{
...
}, 10000);
}
routerOnDeactivate() {
clearInterval(this.timer);
}
