Angular Firebase: I have a function that sets a value to photon2. I need to get this value out of my getPhoton() function and into my Observable BehaviorSubject isLoginSubject? I get an error:
ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'isLoginSubject' of undefined
Here is my auth-service.ts code I would appreciate any help!
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFireList, AngularFireDatabase, AngularFireObject, >AngularFireAction } from 'angularfire2/database';
import * as firebase from 'firebase/app';
import { Observable } from 'rxjs/Observable';
import { ProgramService } from '../views/shared/program.service';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class AuthService {
_photon: string;
isLoginSubject = new BehaviorSubject<string>(this._photon);
public user: Observable<firebase.User>;
itemRef: AngularFireObject<any>;
public userDetails: firebase.User = null;
public LOGGEDIN: boolean = null;
ownersRef = firebase.database().ref().child('owners');
constructor(private _firebaseAuth: AngularFireAuth, private router: >Router, private programService: ProgramService,
private db: AngularFireDatabase) {
this.user = _firebaseAuth.authState;
this.user.subscribe(
(user) => {
if (user) {
this.getPhoton(user); // I would like to use this function with >an Observable/BehaviorSubject.
this.userDetails = user;
this.getController(this.userDetails.uid); // I don't want to use >the localStorage approach... but it works!
this.LOGGEDIN = true;
} else {
this.userDetails = null;
}
}
);
}
getPhoton(user) {
// retrieves "controller" name from the logged in firebase user. How can I >push that to an Observable/BehaviorSubject
if (user) {
this.ownersRef.orderByChild('userId').equalTo(user.uid).once('value')
.then((snap) => {
snap.forEach(function(data) {
const photon2 = data.val().controller; // QUESTION: How do I make >this an Observable-BehaviorSubject?
console.log('getPhoton controller: ' + photon2);
this.isLoginSubject.next(photon2); // Error: Uncaught (in promise): >TypeError: Cannot set property '_controller' of undefined
});
});
}
}