Angular 5 路由器在谷歌登录回调中无法正常工作

Posted

技术标签:

【中文标题】Angular 5 路由器在谷歌登录回调中无法正常工作【英文标题】:Angular 5 router does not work properly in google login callback 【发布时间】:2018-10-14 22:54:18 【问题描述】:

我正在构建具有登录和仪表板以及简单路由的网络应用程序;

我有两个登录选项和路线:

登录选项:

    使用电子邮件:

    login(u) 
        this._loginService.login(u)
           .subscribe(data => 
              console.log('Email login successful!');
              this._router.navigate(['/dashboard']);
           );
    

    用谷歌:

    googleLogin() 
    gapi.auth2.authorize(
        client_id: *
        scope: 'email',
        response_type: 'code',
        prompt: 'select_account'
      ,
      (response) => 
        if (response.error) 
          return;
        
        this._loginService.loginWithGoogle(response)
          .subscribe(response1 => 
            console.log('Google login successful!');
            console.log(response);
            this._router.navigate(['/dashboard']);
          );
      );
    

    路由器选项:

    const appRoutes: Routes = [ path: 'dashboard', component: MainComponent, path: 'login', component: LoginComponent

邮箱登录成功后,路由器导航,没有问题。

问题是,当 google 使用 google sign in 登录并且路由器导航到 /dashboard 时,应用程序会以这种方式崩溃:

    如果我按下按钮更改路线,它只会显示它的视图并且不会从 dom 中删除我的仪表板。 有时登录页面不会从 dom 中删除 其他函数在我的代码中不起作用。 控制台中没有错误

当我重新加载页面时,一切正常。

【问题讨论】:

【参考方案1】:

要解决这个问题,试试吧!

constructor(private zone: NgZone) 
    ...
    ...

      this.zone.run(() => 
         this._router.navigate(['/dashboard']);
       );

参考:Angular 2 ngOnInit not called

【讨论】:

以上是关于Angular 5 路由器在谷歌登录回调中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

来自appDelegate performSegue的Swift 3在谷歌登录后无法正常工作

无法在谷歌端口号 5228 - 5230 上远程登录

急求大神!!索尼z3恢复出厂设置后开机向导卡在谷歌登录界面怎么办?

Twitter Bootstrap 导航分隔线无法在谷歌浏览器上正常工作

Angular 5 的子路由无法正常工作

Angular最新教程-第三节在谷歌浏览器中调试Angular