【问题标题】:How do I unsubscribe from a Firebase list in Angular2?如何取消订阅 Angular2 中的 Firebase 列表?
【发布时间】:2017-02-20 03:46:27
【问题描述】:

我正在使用

连接到 Firebase 列表
tasks: FirebaseListObservable<ITask[]>;

constructor(private af: AngularFire) {
  this.tasks = this.af.database.list("/tasks");
}

现在我想在我的用户注销时取消该连接。

我已经尝试过this.tasks.unsubscribe(),但该方法似乎是未定义的(我尝试了这个,因为 FirebaseListObservable 是一个 observable)。

我也按照文档中的建议尝试了this.tasks.off(),但它也未定义。

最后,我尝试了this.tasks = null 并且可行,但我不确定这是否是正确的实现。

【问题讨论】:

    标签: angular firebase firebase-realtime-database


    【解决方案1】:

    this.tasksObservable 而不是 Subscription,这就是您无法退订的原因。

    如果您是手动订阅,那么您可以:

    let observable = Rx.Observable.interval(1000);
    let subscription = observable.subscribe(x => console.log(x));
    subscription.unsubscribe();
    

    如果你使用async pipe,那么当组件被销毁时,Angular 会自动取消订阅。基于source code,如果管道的值更改为null,则observable 将被取消订阅,但这在任何地方的文档中都没有指定。我认为更好的选择是显式销毁使用异步管道的组件。

    【讨论】:

    • 完美,我会销毁组件
    猜你喜欢
    • 2016-03-30
    • 2017-12-06
    • 2021-03-23
    • 1970-01-01
    • 2020-11-11
    • 2017-04-13
    • 2017-09-14
    • 2022-01-19
    • 2012-03-14
    相关资源
    最近更新 更多