Comment arrêter un intervalle Observable manuellement?

Je suis en train d'essayer de faire un de 20 secondes de la minuterie comme ceci:

this.timer = Observable.interval(1000).take(20).map((tick) => tick+1).subscribe((tick) => {
    this.reverseTimer = 20-tick;
})

C'est bien, si je laisse le Observables atteindre 20 à chaque fois, mais parfois, je veux la fin de la minuterie tôt. Maintenant, je ne peux pas l'arrêt de la minuterie jusqu'à ce qu'il s'arrête au bout de 20 secondes.

Maintenant, je me cache derrière le minuteur à l'écran quand je le veux arrêter, mais j'en ai besoin pour être en mesure de redémarrer. Si j'essaie de redémarrer le compte à rebours avant les 20 secondes, reverseTimer vacille entre la nouvelle minuterie et du old timer valeurs parce que je n'ai pas arrêté de le old timer.

J'ai essayé this.timer.unsubscribe() mais je reçois le message d'erreur que unsubscribe n'existe pas de minuterie.

Essayez le takeUntil de l'opérateur. - Il encore observable en tant que paramètre. github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/...

OriginalL'auteur Yifan | 2016-08-29