Router.navigation 在 promise 中不起作用

Router.navigation is not working inside the promise

google 登录完成后,我厌倦了从登录页面导航到仪表板。将令牌存储在 localStorage 后,promise 内的导航无法正常工作。

来自 LoginService 一个 googlelogin() return 验证和存储后的承诺。但是在收到 returned 承诺的 LoginComponent 中,router.navigation 不工作。

登录组件

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

登录服务

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);
      })
    })
  }

您缺少来自承诺的 "success" 回调调用

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

这就是为什么我更喜欢 observables 的原因。

无需使用 Promise 构造函数。只需传递 firebase 返回的承诺:

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