Sono nuovo in Angular2 quindi scusami se questa è una domanda banale. Non riesco a interrompere l'intervallo quando faccio clic su un altro link. Questo componente recupera i dati dalla tabella DB ogni 3,5 secondi e viene utilizzato come chat, quindi 100 utenti possono aggiungervi in qualsiasi momento. Non voglio che venga eseguito tutto in background, quindi ho pensato di utilizzare la funzione routeronDeactivate()
per bloccarla quando l'utente è su un altro link.Angular2 - stop/cancel/clear osservabile in routerOnDeactivate()
Penso di star facendo qualcosa di sbagliato. Qualcuno mi può aiutare per favore?
export class FeedComponent {
public feeditems: Feed[];
public timer;
constructor(private _feedService: FeedService) {
}
getArticlesJSON() {
console.log('getArticlesJSON');
this._feedService.getFeedJSON()
.subscribe(
data => this.feeditems = data,
err => console.log(err),
() => console.log('Completed')
);
}
routerOnDeactivate() {
// this.timer.remove();
// this.timer.dematerialize();
// clearInterval(this.timer);
console.log('-- deactivate ');
// console.log('-- deactivate ' + JSON.stringify(this.timer));
}
routerOnActivate() {
this.timer = Observable.timer(5000,3500);
this.timer.subscribe(() => {
this.getArticlesJSON();
});
console.log('++ activate ' + JSON.stringify(this.timer));
}
}
Vuol dire che il timer di reset unsubscribe a zero? – Daniel
Non so cosa intendi con "a zero". Significa che Observable non chiama '() => {this.getArticlesJSON();}' più. –
In genere, quando si annulla l'iscrizione, il timer si azzera o si annulla? Devo resettare il contatore del timer dopo? – Daniel