2017-02-20 61 views
4

我連接到使用如何取消訂閱Angular2中的Firebase列表?

tasks: FirebaseListObservable<ITask[]>; 

constructor(private af: AngularFire) { 
    this.tasks = this.af.database.list("/tasks"); 
} 

一個火力地堡名單,現在我想取消這方面,當我的用戶註銷。

我已經試過this.tasks.unsubscribe(),但看起來方法是未定義的(我試過這個,因爲FirebaseListObservable是一個可觀察的)。

我也試過this.tasks.off()按照文檔中的建議,但它也是未定義的。

最後,我試着this.tasks = null,這工作,但我不知道如果這是正確的實施。

回答

7

this.tasksObservable不是Subscription這就是爲什麼你不能退訂。如果您使用的是async pipe那麼當組件被銷燬角將自動取消

let observable = Rx.Observable.interval(1000); 
let subscription = observable.subscribe(x => console.log(x)); 
subscription.unsubscribe(); 

如果手動訂閱那麼你就可以。基於source code,如果pipe的值更改爲null,則observable將取消訂閱,但這不在任何位置的文檔中指定。我認爲更好的選擇是明確銷燬使用異步管道的組件。

+0

完美,我會銷燬組件 –