如何取消订阅Angular2中的Firebase列表?
问题描述:
我连接到使用如何取消订阅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
,这工作,但我不知道如果这是正确的实施。
答
this.tasks
是Observable不是Subscription这就是为什么你不能退订。如果您使用的是async pipe那么当组件被销毁角将自动取消
let observable = Rx.Observable.interval(1000);
let subscription = observable.subscribe(x => console.log(x));
subscription.unsubscribe();
:
如果手动订阅那么你就可以。基于source code,如果pipe的值更改为null,则observable将取消订阅,但这不在任何位置的文档中指定。我认为更好的选择是明确销毁使用异步管道的组件。
完美,我会销毁组件 –