【问题标题】:Subscribe not firing error when the server response with 400 http error当服务器响应 400 http 错误时订阅未触发错误
【发布时间】:2020-06-30 21:08:01
【问题描述】:

我完全不知道为什么错误没有触发

这是我调用服务器的代码

this.userService.createUser(values).subscribe((response)=> {
                this.alertService.showConfirm("Usuario creado");
                this.dialogRef.close(response);
            }),error => this.alertService.showError({message: error.error.message}) 

这个错误是没有触发的错误

创建用户有以下代码

 createUser(usuario): Observable<boolean>{
    const accessToken  = this.webStorageService.getAccessToken();
    return this.http.post<boolean>(`${this.usersUrl}?access_token=${accessToken}`, usuario,{ headers: this.headers });

this.http 是来自 AngularCommon 的 HttpClient,而 headers 是

this.headers = new HttpHeaders().set('Content-Type', 'application/json');

我有一个响应拦截器,可以捕获每个错误响应,拦截器的重要代码如下

return throwError(err);

因为我只有在 http 错误为 401 时才有拦截器做某事,但我发送的是 400 错误 我在拦截器上有一个错误的控制台日志,它很好地捕获了错误,任何线索为什么它没有到达订阅?

我尝试删除整个拦截器,但它也不起作用,所以我认为不是拦截器问题

【问题讨论】:

  • }),error =&gt; this.alertService.showError({message: error.error.message}) 这一行中,不需要第一个),你不觉得吗?尝试将此行更改为},error =&gt; this.alertService.showError({message: error.error.message}));
  • 代码显示语法错误,因为 ) 在内联函数后关闭订阅 .subscribe((response)=> { .... }) 我关闭订阅
  • 错误回调后关闭subscribe。删除我告诉你的)并将其添加到末尾error.error.message}));
  • 谢谢你!!!它有效,作为答案发布,我很乐意接受它

标签: angular rxjs xmlhttprequest rxjs-observables


【解决方案1】:

}),error =&gt; this.alertService.showError({message: error.error.message}) 行中,不需要第一个),你不觉得吗?尝试将此行更改为},error =&gt; this.alertService.showError({message: error.error.message}));。注意这一行末尾的额外)

感谢您接受这个作为答案,我很感激。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-21
    • 2014-03-14
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 2017-10-09
    • 2020-07-24
    • 1970-01-01
    相关资源
    最近更新 更多