首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型“”Observable<DataSnapshot>“”上不存在属性“”unsubscribe“”

类型“”Observable<DataSnapshot>“”上不存在属性“”unsubscribe“”
EN

Stack Overflow用户
提问于 2017-10-24 17:19:54
回答 2查看 14.6K关注 0票数 14

typescript ( atom编辑器中的tslint)给了我一个typescript错误,但我不知道如何设置正确的类型。

错误消息:

聊天组件:

代码语言:javascript
复制
  private _chatObserver: Observable<firebase.database.DataSnapshot>

  otherMethod () {
        this._chatObserver = this._chat.observe(alarmId)
        this._chatObserver.subscribe(
          (messageSnap: firebase.database.DataSnapshot) => {
            this.messages.push(messageSnap.val())
          },
          error => {throw error})
    }

    ionViewDidLeave() {
       this._chatObserver.unsubscribe() 
    }

_chat提供程序:

代码语言:javascript
复制
  public observe (alarmId){
    let messagesRef = this._ref.child(`alarms/${alarmId}/messages`)

    const observable = Observable.create(observer => {
      messagesRef.on('child_added',(messageSnap) => {
            observer.next(messageSnap)
        },
        (error) => observer.error(error)
      )
      return () => {
        messagesRef.off('value')
      };
    });

    return observable
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-24 17:24:44

Unsubscribe是订阅本身的一个方法。因此,在顶部添加:

代码语言:javascript
复制
private _chatSubscription;

然后在你的otherMethod

代码语言:javascript
复制
this._chatSubscription = this._chatObserver.subscribe(...);

在你的销毁/离开/终止处理程序中:

代码语言:javascript
复制
this._chatSubscription.unsubscribe();
票数 33
EN

Stack Overflow用户

发布于 2017-10-24 17:24:40

尝尝这个

代码语言:javascript
复制
private _chatObserver: Observable<firebase.database.DataSnapshot>
private _subscription:Subscription
otherMethod () {
    this._chatObserver = this._chat.observe(alarmId)
    this._subscription=this._chatObserver.subscribe(
      (messageSnap: firebase.database.DataSnapshot) => {
        this.messages.push(messageSnap.val())
      },
      error => {throw error})
}

ionViewDidLeave() {
   this._subscription.unsubscribe() 
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46906685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档