angular - router.navigate 偶尔不改变 View

标签 angular angular2-routing

我不确定为什么,但大多数时候登录后导航到主页是有效的。但是,有时应用程序会停留在登录页面上,而不是按应有的方式加载主页。

我添加了 .then 和 console.logs,但即使它失败了,我也会在控制台中看到“导航成功”。我不确定还要寻找什么。它可能在 75% 的时间都有效,但当它无法解释原因时,我在控制台中什么也得不到。

当它失败时,控制台中没有消息,我看不到任何错误,页面 View 停留在登录表单上,浏览器的地址栏没有改变,最重要的是我得到了 toast 消息就在它上面。我也试过将 toast 移动到导航调用之后,即使它不导航,仍然会得到 toast。所以我认为 toastService 不会以任何方式影响它。

公共(public)提交登录(登录){ this.loginService.login(Login.value.email, Login.value.password) 。订阅( () => { this.toasterService.pop('成功', '登录', '登录成功'); this.router.navigate(['./home']).then( () => console.log('导航成功'), () => console.log('导航失败') ); }, 错误 => { this.error = ApiHelper.buildErrorStringFromResponse(this.Login.controls, err); } ); }

最佳答案

我发现解决方案是因为我没有使用 .share(),所以订阅并不总是按固定顺序执行。对于原始的 http 调用,我在添加订阅之前添加了 .share(),现在它始终运行正确。

关于angular - router.navigate 偶尔不改变 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43238752/

相关文章:

javascript - 如何从给定的外部url获取数据 session id和所有内容,而不是从 Angular 6中的我的应用程序(路由)获取

html - Angular 2+模板中值的三元运算符

angular - 没有可观察对象的服务

html - 将禁用输入字段的值设置为 ngModel

Angular2 和具有多个可选参数的路由

angular - 从解析器重定向到 404 页面时,将 URL 设置为取消的路径

css - 单击时在两个 ngClass 类之间切换,但仅适用于单击的元素

angular - 在 ng2-charts 中隐藏未使用的轴

twitter-bootstrap - Angular 2 中的 Bootstrap 导航菜单

模块中子应用程序之间的 Angular2 路由