Ad

Can't Modify Public Variable Inside Value Event Listener Angular Firebase Database

I am trying to set a variable I have declared as public inside my class inside of a value event listener in firebase. Although, I am receiving the error

Uncaught TypeError: Cannot read property 'driverAssigned' of null.

How do I set a public variable inside this firebase listener?

I have already tried making a callback function within the class to set my variable, but the error is the same.

export class InRideComponent implements OnInit {
    public driverAssigned: boolean;

    constructor(
      private fireb: AngularFireDatabase
    ) {
      const driverRef_str = "/queue/user";
      this.fireb.database.ref(driverRef_str).on('value', function(snapshot) {
        if (snapshot.val() !== null) {
          console.log("A driver has been assigned!");
          this.driverAssigned = true;
        }
      })
    }
}
Ad

Answer

This is more of Javascript/Typescript context issue:

Although, i didn't checked this but you may want to try below:

this.fireb.database.ref(driverRef_str).on('value', function(snapshot) {
        if (snapshot.val() !== null) {
          console.log("A driver has been assigned!");
          this.driverAssigned = true;
        }
      }.bind(this));

Let me know, if it doesn't work:)

Ad
source: stackoverflow.com
Ad