あなたは私がすることができます基本的にはわずかに変更されたニコラスHenneauxの答えhttps://stackoverflow.com/a/37028266/1549135
を使用することをお勧めします、あなたのアプリケーションでグローバルにこのイベントを処理したい場合net::ERR_CONNECTION_REFUSED
エラーが発生した場合に発生するerror.status === 0
を確認してください。
完全なモジュールファイル:
import { Request, XHRBackend, BrowserXhr, ResponseOptions, XSRFStrategy, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';
export class AuthenticationConnectionBackend extends XHRBackend {
constructor(_browserXhr: BrowserXhr, _baseResponseOptions: ResponseOptions, _xsrfStrategy: XSRFStrategy) {
super(_browserXhr, _baseResponseOptions, _xsrfStrategy);
}
createConnection(request: Request) {
let xhrConnection = super.createConnection(request);
xhrConnection.response = xhrConnection.response.catch((error: Response) => {
if (error.status === 0){
console.log("Server is down...")
}
...
return Observable.throw(error);
});
return xhrConnection;
}
}
モジュールファイル:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { HttpModule, XHRBackend } from '@angular/http';
import { AppComponent } from './app.component';
import { AuthenticationConnectionBackend } from './authenticated-connection.backend';
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
],
entryComponents: [AppComponent],
imports: [
BrowserModule,
CommonModule,
HttpModule,
],
providers: [
{ provide: XHRBackend, useClass: AuthenticationConnectionBackend },
],
})
export class AppModule {
}
あなたは、このためのソリューションを見つけますか?私は(GET、例えばPOST)のHTTP操作でエラーをキャッチし、エラーステータスが200の場合、私は、全体のサーバがダウンしている '民間handleErrorの(:レスポンスエラー)のようなものを想定し –
....また、ここに私の答えを参照してください。 { lerエラー。 if(error.status == 200){ errorText = 'サーバー全体が停止しています。接続が拒否されました。 '; }戻りObservable.throw(ERRORTEXT || 'サーバーエラー')。 } ';このメソッドが本当に問題ないことを確認することからは遠いですが、私が直面しているケースではうまくいくようです – Picci
良い回避策のようです。しかし、この問題を解決してアップグレードすると、コードが壊れることに気づくべきです。したがって、あなたが –