听力火焰根据角度的组件变化

时间:2018-06-01 14:28:24

标签: angular typescript firebase

我想访问多个组件中的一些数据。我创建了一个服务,为此目的检索数据。当我尝试观察我的数据时出现问题。我的代码:

@Injectable()
export class NotificationsService {

    constructor(private af: AngularFireDatabase) {}

    public retrieveNotifications(): Observable<NotificationObj[]> {
      return this.af.database.ref(refs.NOTIFICATIONS).on('value', snap => {
        const data = snap.val();
        return Object.keys(data).map(key => {
          return new NotificationObj(key, data[key]);
        });
      })
    }
}

我收到消息:

  

TS2322:输入'(a:DataSnapshot,b?:string)=&gt;任何”是不能分配给输入‘可观测’。属性 '_isScalar' 中缺少类型“(一个:DataSnapshot,B ?:串)=&GT;任何”。

如何转换我的方法以避免解析服务之外的数据并节省从组件中侦听更改的可能性?

1 个答案:

答案 0 :(得分:0)

我在那里找到了解决方案Firebase error when subscribing to ref.on(‘value’, callback); | Property 'subscribe' does not exist on type '(a: DataSnapshot, b?: string) => any'

Comlete代码是:

  public retrieveNotifications(): Observable<NotificationObj[]> {
    return Observable.create(subscriber => {
      const ref = this.af.database.ref(refs.NOTIFICATIONS);
      const callback = ref.on('value', snap => {
        const data = snap.val();
        const notifications = Object.keys(data).map(key => {
          return new NotificationObj(key, data[key]);
        });
        subscriber.next(notifications);
      });
      return () => ref.off('value', callback);
    })
  }