AngularFire - 如何等待注册完成?

时间:2018-03-29 16:32:59

标签: typescript angularfire

我想升级我的注册方法,以便在注册后立即记录用户。但是下面的方法不起作用,因为我在firebase注册之前调用了loginUser()。如何重建我的registerUser()以等待用户在服务器中存在?

export class AuthService {

  token: string;

  constructor(
    private router: Router,
    public afAuth: AngularFireAuth,
  ) {}

  registerUser(email: string, password: string) {
    this.afAuth.auth.createUserWithEmailAndPassword(email, password)
      .then(
        () => {
          this.loginUser(email, password);
          this.router.navigate(['/login']);
        }
      )
      .catch(
        error => {
          console.log(error);
        });
  }

1 个答案:

答案 0 :(得分:0)

使用可观察的createUserWithEmailAndPassword,而不是使用this.afAuth.authstate的结果。一旦用户登录,就会更新该observable,因此您可以将登录后的功能放在那里。它可能看起来像这样:

this.afAuth.authstate.subscribe(user=> {
    if (user) {
        //this means the user has logged in
        this.loginUser(email, password);
        this.router.navigate(['/login']);
    }