2016-09-30 33 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