angular - 如何从订阅的错误回调中获取标头?
问题描述
我想在用户创建发布响应后处理来自服务器的任何错误响应。该帖子是在 UserService createUser() 方法中创建的。该catch
方法会捕获任何错误,然后引发新错误。我已经读到这是必要的,否则订阅方法中的成功回调将被激活,无论是否出现错误。
我使用 Visual Studio 代码作为该项目的 IDE,当您在.
变量后输入运算符时,它会给出可以在该变量上调用的任何方法的列表。成功回调变量具有所有预期的方法,包括标头。错误回调只有 html。所以我的问题是:我如何让标题摆脱错误?我需要访问标题,因为我的自定义标题消息是在标题中发送的。这需要在位于组件控制器内的订阅方法中完成,因为当我处理服务中的错误时,我无法弹出错误消息。这是我的代码:
组件控制器端的代码:
createUser():void{
this.loading = true;
this.userService.createUser(new UserCreateDTO(this.userForm.get('userName').value,
this.userForm.get('emailAddress').value,
this.userForm.get('password').value))
.subscribe(
success =>{
this.msgs.push({severity:'success', summary:'Success', detail: `User ${this.userForm.get('userName').value} succesfully created.`});
},
error =>{
let errorMessage: string = error.???
this.msgs.push({severity:'error', summary:'Error', detail: `error`});
}),
() =>{
this.loading = false;
}
}
}
问号表示除了方法 html 之外没有任何方法建议出现。
正在发布帖子的服务端的代码:
createUser(newUser: UserCreateDTO): Observable<Response> {
return this.http.post<Response>(this.authUrl + "/user/create", newUser)
.catch((error:any) =>{
return Observable.throw(new Error(error.status));
});
}
谢谢
解决方案
因此,标题将可用在HttpErrorResponse
您在 .catch 中返回的内容上,但您将其标记为类型any
,因此您不会看到代码建议。尝试catch((error: HttpErrorResponse) =>
在您的服务中查看可用的内容。
然后,您将替换为HttpErrorResponse
一个简单的Error
对象,您只是将状态作为消息提供(这将error.message
在组件中的错误处理程序中可用)。我认为您应该在服务中定义所需的错误详细信息,然后error.message
在组件中使用。
推荐阅读
- python-3.x - 除了 Gogle Cloud Functions 中的标准实现之外,是否可以使用不同的 Python 实现?
- python-3.x - 合并熊猫中多行的文本
- android - 模拟器:无法在 macbook 上启动
- python - 从 AWS 机密管理器中提取数据库详细信息会引发错误 - Python
- visual-studio-2017 - NuGet 包源可以作为设置从 Visual Studio 2017 导出吗?
- javascript - 将 laravel 变量传递给 Vue 前端
- javascript - 使用 babel 在构建过程中运行自定义函数
- asp.net-core - 访问通用的集线器集合
- json - 如何使用 Python 请求从 REST API 查询 JSON 格式的数据?
- omnet++ - 为什么 DemoSafetyMessage.h Veins5 中 getSenderSpeed() 的返回类型是 Coord&?