我有一个登录功能,我看到我遇到的大多数问题都围绕订阅和等待,但是我认为我已经将必要的代码放入了订阅中。在订阅返回之前,我的菜单/仪表板页面似乎被调用(ngOninit)。
代码如下:
this.authService.login(this.user).then( (rval) => {
console.log('Logged in so getting up to date user data');
this.userService.getUserServer().subscribe (res => {
this.user = res;
this.userService.saveUserStore(this.user);
console.log('Navigating to Dashboard from Login Page');
console.log(this.user);
this.router.navigate(['menu' , 'dashboard']); <--Gets to the nav before the subscribe returns?
},
error => {
});
},
error => {
console.log('At error =');
console.log(error);
return this.helper.showAlert(error);
});
我也尝试了使用async await的一些变体,因为之前我有一个相似但不同的问题,但是没有使用subscribe。我发现它一直在访问尚未准备就绪的导航代码,因为那时数据还没有返回。
我想念什么? 干杯
编辑 好的。我想我在调用ngOninit时可能会误解了-我以为在第一次导航到时会调用onInit。我不认为是这种情况。 (不确定?)...我仍然需要弄清楚如何在页面中提供用户信息,因此欢迎任何提示。