Javascript Angular4路由器在使用Google登录回调中的`router.navigate()`后中断
我需要在Angular4应用程序中实现Google登录,但在使用Google登录回调中的Javascript Angular4路由器在使用Google登录回调中的`router.navigate()`后中断,javascript,angular,google-signin,angular-routing,Javascript,Angular,Google Signin,Angular Routing,我需要在Angular4应用程序中实现Google登录,但在使用Google登录回调中的router.navigate()后,我遇到了奇怪的路由问题 我建立了一个问题的例子,注释和复制步骤在第一页 我还使用部署的代码设置了回购协议,路由中断的示例在angular-4-google-signin分支中,路由正常使用Angular2的示例在angular-2-google-signin分支中。您可以看到,在相同的操作序列之后,Angular2版本路由正常工作 我需要了解是Angular的问题还是我没
router.navigate()
后,我遇到了奇怪的路由问题
我建立了一个问题的例子,注释和复制步骤在第一页
我还使用部署的代码设置了回购协议,路由中断的示例在angular-4-google-signin
分支中,路由正常使用Angular2的示例在angular-2-google-signin
分支中。您可以看到,在相同的操作序列之后,Angular2版本路由正常工作
我需要了解是Angular的问题还是我没有正确使用它的路由器的问题。如果我没有正确使用路由器,请告诉我如何修复它。我已经从GitHub(两个分支)下载了您的代码。 我运行了
npm安装
,然后运行了ng服务
,它就像一个魔咒。
我已经安装了运行的npmv5.3.0
,节点v6.10.3
。所以我猜要么你上传了错误的代码,要么你的设置有问题
我建议您下载自己的代码,并在将node和npm更新到最新版本后检查此代码
对于v4版本,我在运行npm install
时遇到了一个错误。我已删除以下部分:
"engines": {
"node": "6.11.1",
"npm": "3.10.9"
},
从
package.json
文件,然后按预期安装、提供服务和功能。因此,我再次怀疑node/npm问题。我也有与您相同的问题。看来有一个‘变’角没有找到。您可以尝试在zone.run回调中运行代码
我更改了代码,如下所示:
更改前:
this._router.navigate(['dashboard'])
更改后:
this._zone.run(
() => this._router.navigate(['dashboard'])
);
现在它可以工作了 您在这两个版本中使用的代码完全相同吗?@ronenmiller,是的,所有与路由器相关的逻辑都是相同的,我首先实现了Angular4版本,然后签出到Angular2分支,只更改了dependenciesTry,在signin's then块之后添加一个catch,看看是否有错误。如果是,请粘贴它here@ronenmiller,我得到了
这个.auth2.signIn(…).then(…).catch不是一个函数,添加它后,它看起来像是从GoogleAuth返回的承诺。signIn()没有.catch()
方法,错误只能在传递给的第二个回调函数中捕获。then()
@ronenmiller,在之前添加.catch()
块。然后()
提供相同的结果,没有。catch()
方法您从branchangular-4-google-signin
上传的,对吗?我在repo中看到默认选择的分支angular-2-google-Sign
branch,所以只需检查一下,正如我在问题中提到的,Angular2版本可以正常工作,但Angular4在谷歌签名后中断,谷歌签名将重新运行,编辑我的答案以显示我所做的更改。