使用Angular HTTP在错误请求上显示错误消息

时间:2017-03-12 11:23:15

标签: angular

我的服务中有一部分代码可以检查HTTP请求中的错误请求并向用户发送警报。此外,如果请求成功,我还会收到另一条消息。但是,我的问题是,如果出现错误,则会引发这两条消息。

这是我的服务:

5

这是我的deleteProduct(product:Product) { if ( this._loggedInGuard.isLoggedIn() ) { let token = localStorage.getItem('token'); let body = JSON.stringify(product); let headers = new Headers( { 'Content-Type': 'application/json', "X-HTTP-Method-Override": "DELETE", 'Authorization': 'Bearer ' + token}); return this._http .post(this.API + "/products/"+product.id, body, {headers: headers} ) .map(res => res.json()) .catch(this._responseService.catchBadResponse) .finally(() => this._responseService.success('Well done')); } } 代码:

ResponseService

我想我需要在@Injectable() export class ResponseService { constructor() { } catchBadResponse: (errorResponse: any) => Observable<any> = (errorResponse: any) => { let res = <Response>errorResponse; let err = res.json(); let emsg = err ? (err.error ? err.error : JSON.stringify(err)) : (res.statusText || 'unknown error'); Messenger().post( { message: emsg.message, hideAfter: 10, type: 'error', showCloseButton: false } ); return Observable.of(); } success(msg) { Messenger().post( { message: msg, hideAfter: 10, type: 'success', showCloseButton: false } ); } } 上添加一个例外,只有在我没有任何错误时才能执行。但我无法使其发挥作用。

1 个答案:

答案 0 :(得分:0)

始终会调用

do。将{{1}}替换为{{1}}。捕获异常时不执行do