Токен Angular 7 после входа в систему не определен - PullRequest
0 голосов
/ 24 февраля 2019

Попытка получить значение токена и сохранить имя пользователя до тех пор, пока пользователь не нажмет на выход.Если я пытаюсь сохранить его в переменной, он показывает неопределенное, где я могу видеть значение токена через console.log()

** Auth.service.ts

signIn(email: string, password: string) {
    firebase
      .auth()
      .signInWithEmailAndPassword(email, password)
      .then(response =>
        firebase.auth().onAuthStateChanged(
          (user) => {
            if(user){
              user.getIdToken().then(
                data => this.token = data
              )
            }
          }
        )
      )
      .then(
        response => {
          this.router.navigate(['dashboard']);
        }
      )
      .catch(error => console.log(error));
  }
getToken() {
    firebase.auth().onAuthStateChanged(function(user){
      if(user){
        user.getIdToken().then(
          function(data){
          // console.log(data);
        })
      }
    });
  }

Framework:Angular7

1 Ответ

0 голосов
/ 24 февраля 2019

Если вы хотите позвонить then, вам нужно вернуть Обещание .Как это

getToken() {
  return new Promise((resolve, reject) => {
    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        user.getIdToken().then(function(data) {
          resolve(data);
        }).catch(reject);
      } else {
        reject('Error while executing onAuthStateChanged');
      }
    });
  });
}
...