我正在使用
连接到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
并且这样做有效,但我不确定这是否是正确的实现。
答案 0 :(得分:7)
this.tasks
是Observable而不是Subscription,这就是您无法取消订阅的原因。
如果您手动订阅,则可以:
let observable = Rx.Observable.interval(1000);
let subscription = observable.subscribe(x => console.log(x));
subscription.unsubscribe();
如果您使用的是async pipe,那么当组件被销毁时,Angular会自动取消订阅。如果管道的值变为null,则基于source code,observable将被取消订阅,但在任何地方的文档中都没有指定。我认为更好的选择是明确销毁使用异步管道的组件。