我不确定为什么,但大多数时候登录后导航到主页是有效的。但是,有时应用程序会停留在登录页面上,而不是按应有的方式加载主页。
我添加了 .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/