在Google Sign In回调中使用`router.navigate()`后,Angular4路由器中断了

时间:2017-09-05 01:22:20

标签: javascript angular google-signin angular-routing

我需要在Angular4应用中实施Google登录,但在Google登录回调中使用router.navigate()后,我遇到了奇怪的路由问题。

我设置了问题here的示例,请注意重现的步骤位于第一页。

我还使用已部署的代码here设置了repo,已损坏路由的示例位于angular-4-google-signin分支中,并且使用Angular2正确处理的路由示例位于angular-2-google-signin分支中。您可以看到Angular2版本路由在相同的操作序列之后正常工作。

我需要了解Angular是否存在问题,还是我没有正确使用路由器。如果我没有正确使用路由器,请告诉我如何解决它。

2 个答案:

答案 0 :(得分:1)

我已从GitHub(两个分支机构)(your code)下载了您的代码。 我跑npm install,然后ng serve,它就像一个魅力。 我已经安装了npm v5.3.0node v6.10.3。所以我猜你要么上传了错误的代码,要么你的设置中出现了错误。

我建议你下载自己的代码并在更新节点和npm到最新版本后检查一下。

对于v4版本,我在运行npm install时遇到错误。我删除了以下部分:

  "engines": {
    "node": "6.11.1",
    "npm": "3.10.9"
  },
package.json文件

然后安装,服务和功能按预期工作。所以,我再次怀疑node / npm问题。

答案 1 :(得分:0)

我和你的一样有同样的问题。似乎有一个变化'角度没找到。您可以尝试在zone.run回调中运行代码。

我改变了我的代码:

改变之前

this._router.navigate(['dashboard'])

更改后:

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

现在可以使用了!