router.navigate偶尔不改观

router.navigate occasionally not changing view

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

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

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

public submitLogin(Login) { this.loginService.login(Login.value.email, Login.value.password) .subscribe( () => { this.toasterService.pop('success', 'Login', 'Successfully logged in'); this.router.navigate(['./home']).then( () => console.log('navigation successful'), () => console.log('navigation failed') ); }, err => { this.error = ApiHelper.buildErrorStringFromResponse(this.Login.controls, err); } ); }

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