我正在使用
连接到 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这就是为什么你不能取消订阅。
如果您是手动订阅,那么您可以:
let observable = Rx.Observable.interval(1000);
let subscription = observable.subscribe(x => console.log(x));
subscription.unsubscribe();
如果您使用的是 async pipe然后 Angular 会在组件销毁时自动取消订阅。基于source code ,如果管道的值更改为 null,则 observable 将被取消订阅,但这在文档中的任何地方都没有指定。我认为更好的选择是显式销毁使用异步管道的组件。
关于angular - 如何取消订阅 Angular2 中的 Firebase 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42336142/