【发布时间】:2017-08-31 14:33:27
【问题描述】:
在我的组件的 ngOnInit 中,我使用 documentation 中建议的 paramMap 来重用组件,但根据路由中提供的用户 ID 进行切换:
this.route.paramMap
.switchMap((params: ParamMap) => {
this.errors = false;
this.busy = true;
return this.userService.getUser(params.get('id'));
})
.subscribe((user) => {
this.busy = false;
this.errors = false;
// do something with user object...
}, (error) => {
this.busy = false;
this.errors = true;
if (error.status === 404) {
this.errorMsg = 'User not found';
}
});
但是,一旦 userService.getUser() 方法抛出 404 错误,当路由参数更改时,.switchMap() 就会停止触发,例如更改为新的用户 ID。我已经尝试将 .catch() 扔到服务和组件中,但它似乎没有任何效果,并且在 404 之后它仍然停止工作。我这样做是否不正确?
【问题讨论】:
标签: angular rxjs angular-routing