angular - 如何取消订阅 Angular2 中的 Firebase 列表?

标签 angular firebase firebase-realtime-database

我正在使用

连接到 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/

相关文章:

swift - 如何运行服务器端实时数据库查询

javascript - 调用快照的 Firebase Cloud Function 'ForEach' 子函数

javascript - 使用通配符作为路径的深度路径查询

javascript - 获取路线帕尔马斯并在 Angular 2/4/5 的下拉列表中显示默认值并进行翻译(ngx-translate)

javascript - Angularfire - $scope 在异步调用后不会更新,并且 $apply 抛出错误

android - 为什么 Firebase Phone Auth 需要很长时间才能在某些运营商上发送短信验证码?

reactjs - 从 Firestore 获取数据

javascript - 如何使用相同的代码库创建具有一些共享服务和组件的另一个项目?

Angular:禁用子控件更新父窗体 Pristine 状态

javascript - Angular2/Ionic2 : Execute $http. 进入监听器