2017-02-20 25 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

完美,我会销毁组件 –