2016-04-30 7 views
6

Ich benutze ein beobachtbares Intervall, um eine bestimmte Funktion jede fünfte Sekunde innerhalb einer bestimmten Komponente auszuführen, bezogen auf einen Pfad in meiner Routenkonfiguration.angular2 - Die beste Methode zum Beenden eines beobachtbaren Intervalls bei Pfadänderungen

Observable.interval(5000).subscribe(res => { 
    // Something happens here 
}); 

Allerdings möchte ich das Intervall beenden, wenn der Pfad ändert. Jetzt wird nur noch die Aufgabe ausgeführt ...

Was ist der beste Weg, dies zu tun?

var subscription = Observable.interval(5000).subscribe(res => { 
    // Something happens here 
}); 

// to be called when the route changes 
subscription.unsubscribe(); 

Da die beobachtbaren kalt ist, und es wird nicht mehr Abonnement, wird der beobachtbare angeordnet ...:

Antwort

4

Sie aus dem Abonnement (die Rückkehr Aufgabe des Verfahrens abonnieren) in einem solchen Fall abmelden könnten

Sie können die Hook-Methode "routerOnDesactivate" in Ihrer Komponente nutzen, um sich abzumelden. Es ist der Hook, der Sie darüber informiert, wenn Sie die Routenkomponente im Routingkontext verlassen.

diesen Link finden Sie weitere Details:

+0

Das scheint fair, aber woher weiß ich, wenn sich die Route innerhalb der Komponente ändert? –

+0

Sie können die Hook-Methode routerOnDesactivate in Ihrer Komponente verwenden, um sich abzumelden. Ich habe meine Antwort aktualisiert. –

0

Eine gute Möglichkeit, dies zu lösen, ist die beobachtbare in einer Variablen zu erstellen und verwenden, die ‚| Async-Pipe zum Abonnieren und Anzeigen des Werts in der Vorlage Das Abmelden wird dann von der Leitung erledigt.

Verwandte Themen