0

私は安らかな WebApi バックエンドからデータを返す Angular 2 サービスに取り組んでいます。

利用できないサービスを適切に処理できるようにしようとしていますが、エラー応答で予期しない情報を取得しています。

これがコードです

update(fund, transactionId:string, showToastOnError: boolean, useCorrectUrl: boolean) {
        let options = this.getStartCall();
        options.headers.append("transaction-id", transactionId)
        let url = fundsUrl + (useCorrectUrl ? "" : "breakTheUrl");
        return this._http.put(url, JSON.stringify(fund), options)
            .map(res => res.json())
            //.retry(5)
            .catch(errorResponse => {
                let res = <Response>errorResponse;
                let err = res.json();
                let emsg = err ?
                    (err.error ? err.error : JSON.stringify(err)) :
                    (res.statusText || 'unknown error');
                this._logger.log(emsg, "The fund was not updated", LogLevel.Error, showToastOnError);
                return Observable.throw(emsg);
            })
            .finally(() => this._spinnerService.hide());

    }

ネットワーク トラフィックを見ると、予想どおり 404 エラーが表示されます。

私の問題は私のキャッチ機能にあります。

私が見ている値は次のとおりです。

JSON.stringify(errorResponse)

{"_body":{"isTrusted":true},"status":200,"statusText":"Ok","headers":{},"type":3,"url":null}"

errorResponse.json() 

bubbles: false
cancelBubble: false
cancelable: false
currentTarget: XMLHttpRequest
defaultPrevented: false
eventPhase: 2
isTrusted: true
isTrusted: true
lengthComputable: false
loaded: 0
path: Array[0]
position: 0
returnValue: true
srcElement: XMLHttpRequest
target: XMLHttpRequest
timeStamp: 1460990458693
total: 0
totalSize: 0
type: "error"
__proto__: XMLHttpRequestProgressEvent

ここで何か間違ったことをしていますか、それとも Angular2 beta 15 のバグですか?

4

1 に答える 1

0

onerrorほとんどの場合、基になる XHR オブジェクトでコールバックが呼び出されたときに、エラーに対してこのような値があります。ソース コードの次の行を参照してください: https://github.com/angular/angular/blob/master/modules/angular2/src/http/backends/xhr_backend.ts#L70

つまり、404 ステータス コードではなく、 のようなエラーで発生するはずnet::ERR_NAME_NOT_RESOLVEDです。

404 ステータス コードはonloadコールバックによって処理されます: https://github.com/angular/angular/blob/master/modules/angular2/src/http/backends/xhr_backend.ts#L37

beta15 でテストを行いましたが、問題を再現できません。

この plunkr を参照してください: https://plnkr.co/edit/SB3KLZlbJT3wm9ATAE0R?p=preview

于 2016-04-18T17:31:48.433 に答える