2016-09-30 98 views
0

我不断收到取消订阅不是函数的错误。我正在使用[email protected]如何取消订阅rxjs中漂亮的TimerObservable

这些都是我的import语句:

import { TimerObservable } from 'rxjs/observable/TimerObservable'; 
import 'rxjs/add/operator/take'; 

这是TimerObservable问题:

countdown = TimerObservable.create(0, 1000).take(6); 

这揭开序幕定时器:

startCountdownTimer(): void { 
    this.countdown.subscribe(
     i => this.timeRemaining = (5 - i).toString(), 
     null, 
     () => this.toDelete = -1) 
} 

这很好,这并未't work:

012的个

回答

0

主叫方收到一个subscription

startCountdownTimer(): void { 
    this.subscription = this.countdown.subscribe(
     i => this.timeRemaining = (5 - i).toString(), 
     null, 
     () => this.toDelete = -1); 
} 

它有一个unsubscribe方法:

cancelCountdownTimer(): void { 
    this.subscription.unsubscribe(); 
} 
+0

因此,对于每一个可观察我创造,我还需要一个订阅。得到它了。这似乎有点违反直觉,但可能是因为仍然有些事情我不了解RxJs。谢谢! – wolfhoundjesse

+1

你可能会发现这个有趣的/有用的:https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87 – cartant

+0

我读过,当它出来。总是那里好东西!在这种特殊情况下,我将从应用程序中删除模块,并用内联元素替换它们,例如,出现一个新的列表项目,并在5秒倒计时删除和取消按钮。 现在,我没有真正考虑的是我是否可以用takeUntil替换take(6)(6或点击取消按钮)。你怎么看? – wolfhoundjesse