我在我的应用程序中使用angular-cli,并且有一个登录页面,这是提交它的处理程序:
onSubmit() {
this.authService.login(this.uname.value, this.pass.value)
.subscribe(
(user: User) => {
this.username = user.username;
localStorage.userExist = true;
this.route.navigate(['/office/1']);
},
(err) => {
this.errorFromServer = err.error;
});
}
提交后,我希望将我重定向到localhost:3000/office/1
,但是却出现错误:
GET http://localhost:3000/api/plan net::ERR_CONNECTION_RESET.
http://localhost:3000/api/plan提供了有关办公计划的信息,而我在PlanResolver的帮助下获得了这些数据。实际上,当我在办公室之间切换时,我可以获得这些数据,但是当我尝试从登录页面重定向时,该数据不起作用。因此,订阅中的导航可能有问题。
我有两个解析器,应该在导航之前执行:
{path: 'office/:id', component: OfficesComponent,
resolve: {cres: OfficeResolver, plan: PlanResolver},
canActivate: [AuthGuardService]},
当我有一个解析器时,它可以正常工作,因此我决定使用forkJoin将两个解析器合并为一个,但是出现了相同的错误。
我现在唯一的解决方案是将导航置于SetTimeout中:
setTimeout(() => {
this.route.navigate(['/office/1']);
}, 500);
如果您有什么想法,请告诉我。
谢谢。
答案 0 :(得分:1)
.navigate
方法将命令数组作为第一个参数。您正在传递类似于.navigateByUrl
的组合网址。因此,解析程序无法访问id参数。
尝试像这样重新定义重定向:
this.route.navigate(['office', 1']);