Subscribe to an AngularFireObject

Viewed 3103

I just upgraded to AngularFire2 rc 5.0.

I adapted my code so that it matches the new types and functions but I get the following error when trying to subscribe to a .object(path):

Property 'subscribe' does not exist on type 'AngularFireObject'

My code below.

Provider:

getEvent(id: string): AngularFireObject<any> {
    let path = `/events/${id}`;
    return this.af.object(path).valueChanges();
  }

Page:

...
event$: AngularFireObject<any>;
...

// Retrieve event's info
this.event$ = this.eventService.getEvent(this.id);

// Retrieve event's ownership info
let subscription = this.event$.subscribe(event => {
  this.owner$ = this.userService.getUserPublicInfo(event.owner);
});

Any idea?

1 Answers

You are using valueChanges() meaning getEvent(id: string) is returning FirebaseObjectObservable<any> not AngularFireObject<any>. Check here.

AngularFireObject<any> is returned by this.af.object(path)

Change the return type of your function.

getEvent(id: string): FirebaseObjectObservable<any> {
    let path = `/events/${id}`;
    return this.af.object(path).valueChanges();
  }
Related