首页 文章

AngularFire2 4.0在 Headers 中显示用户电子邮件

提问于
浏览
1

我试图在AngularFire 2版本4.0升级文档之后在我的 Headers 组件中显示用户电子邮件: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数据库,我该怎么办?

一如既往,感谢您的帮助!

1 回答

  • 2

    我偶然发现了这个问题 . 发生的事情是,您评估时的用户仍然是可观察的,而不是您登录的结果 . 一旦结算(| async),电子邮件就可用了 . 在你的div你需要把:

    {{(user | async)?.email}}
    

    而已 .

    希望有所帮助 .

相关问题