我试图在AngularFire 2版本4.0升级文档之后的标题组件中显示用户电子邮件:https://github.com/angular/angularfire2/blob/master/docs/version-4-upgrade.md
Header.component
import { Component, OnInit } from '@angular/core';
import { AuthService } from './auth.service';
import * as firebase from 'firebase/app';
import { Observable } from 'rxjs/Observable';
import { Router } from '@angular/router';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFireDatabase, FirebaseListObservable,FirebaseObjectObservable } from 'angularfire2/database';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {
user: Observable<firebase.User>;
constructor(afAuth: AngularFireAuth) {
this.user = afAuth.authState;
}
了header.html
<div> {{ (user | async)? | json }} </div>
如果我这样做,我在html中获取Object对象。如果我删除括号外的问号,那么html会显示一个包含大量信息的json,包括电子邮件。 我想要的是在html中显示电子邮件,如下所示:
<div> {{ user?.email }} </div>
我的第二个问题是我在firebase数据库中也有用户电子邮件。我应该使用firebase auth或firebase数据库来显示该信息吗?如果我应该使用Firebase数据库,我该怎么做?
一如既往,感谢您的帮助!
答案 0 :(得分:2)
我偶然发现了这个问题。发生的事情是,您评估时的用户仍然是可观察的,而不是您登录的结果。一旦结算(| async),电子邮件就可用了。在你的div中,你需要把:
{{(user | async)?.email}}
就是这样。
希望有所帮助。