【发布时间】:2017-07-28 05:12:50
【问题描述】:
我正在尝试从 Firebase google login 获取当前用户信息,但我真的很困惑为什么 angularfire 不允许我存储当前用户信息。当我尝试输出this.user 的值但在块外返回null 值时,将返回当前用户信息。需要一点帮助来解决这个问题。
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(){
}
}
【问题讨论】:
-
嗯,它是异步的,所以在块外的 console.log() 中,user 为 null,因为 observable 尚未发出任何值(http 请求尚未完成)。
-
@AJT_82 我已经阅读了您提供的页面,但您能否提供一些我将如何做到的示例?
标签: angular typescript firebase firebase-authentication