Router.navigation не работает внутри обещания - PullRequest
0 голосов
/ 22 мая 2019

Мне надоело переходить со страницы входа в систему на панель инструментов после того, как вход в Google завершен.Навигация внутри обещания после сохранения токена в localStorage не работает.

От LoginService googlelogin () возвращает обещание после проверки и сохранения.Но в LoginComponent, который получает возвращенное обещание, router.navigation не работает.

LoginComponent

loginwithgoogle(){
    this.loginservice.googlelogin().then(()=>{
      console.log("login");
      this.route.navigate(["../Home"],{relativeTo:this.activatedroute});
    });
  }

LoginService

googlelogin(){
    return new Promise(()=>{
      var provider = new firebase.auth.GoogleAuthProvider();
        firebase.auth().signInWithPopup(provider).then(function(result) {
        var idToken = result.credential.idToken;
        localStorage.setItem('token',idToken);
      })
    })
  }

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Нет необходимости использовать конструктор Promise. Просто передайте обещание, возвращенное пожарной базой:

googlelogin() {
      var provider = new firebase.auth.GoogleAuthProvider();
      return firebase.auth().signInWithPopup(provider).then(/* process response */);
}

0 голосов
/ 22 мая 2019

Вы пропустили "успешный" обратный вызов из своего обещания

return new Promise((successCallback)=>{
    .....yourcode
    successCallback(someReturnValuePassedToThenCallback);
}

Вот почему мне больше нравятся наблюдаемые.

...