I'm trying to get the current user information from Firebase google login but I'm really confused as to why angularfire would not let me store the current user information. Current user info is returned when I try to output the value of this.user
but returns a null
value outside of the block. Need a little help figuring this out.
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { FlashMessagesService } from 'angular2-flash-messages';
import { FirebaseService } from '../../services/firebase.service';
import * as firebase from 'firebase';
import { AngularFire, FirebaseAuthState } from 'angularfire2';
@Component({
selector: 'app-navbar',
templateUrl: './navbar.component.html',
styleUrls: ['./navbar.component.css']
})
export class NavbarComponent implements OnInit {
public user: FirebaseAuthState;
public userProfiles: any;
public displayName: string;
constructor(
public af:AngularFire,
public flashMessage:FlashMessagesService,
private firebaseService: FirebaseService,
private router:Router
) {
this.af.auth.subscribe(user => {
if(user) {
// user logged in
this.user = user;
console.log('if');
console.log(this.user);
}
else {
// user not logged in
// this.user = ;
console.log('else');
}
})
console.log(this.user);
}
ngOnInit() {
this.af.auth.subscribe((state: FirebaseAuthState) => {
this.userProfiles = state;
this.displayName = this.userProfiles.auth.displayName;
// console.log(this.userProfiles);
});
console.log(this.firebaseService.getCurrentUser());
}
login(){
this.af.auth.login();
}
logout(){
this.af.auth.logout();
this.flashMessage.show('You are logged out',
{cssClass: 'alert-success', timeout: 3000});
}
username(){
}
}