2017-03-29 5 views
5

Ich versuche, alle Fehler zu übergeben, die in einer HTTP-Anforderung an einen gemeinsamen Protokolldienst von allen meinen Diensten auftreten könnten:Fehler bei Observable Handhabung in Angular 2

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/catch'; 

constructor(logger: LoggerService) { } 

doSomething(): Observable<any> { 
    return this.http 
     .post('/foo/bar', {}) 
     .catch(this.notifyErrors); 
} 

protected notifyErrors(error: any): Observable<any> { 
    this.logger.log(error); 

    return Observable.throw(error); 
} 

Leider innerhalb der notifyErrors Methode, this ist verloren. Ich habe versucht, dies als einen dicken Pfeil zu definieren, aber ich bekomme vom TS-Compiler Typfehler. Ich habe die genaue Syntax in der Observable-Dokumentation verwendet.

+1

Gunter, hat eine elegantere Lösung. Ich mag seine besser als meine. – Mardok

Antwort

-1

ich Ihren Code ausgeführt haben nicht beheben, aber wenn Sie Möchten Sie auf dieses zugreifen, müssen Sie es möglicherweise übergeben.

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/catch'; 

constructor(logger: LoggerService) { } 

doSomething(): Observable<any> { 
    return this.http 
     .post('/foo/bar', {}) 
     .catch(err => { 
      this.notifyErrors(err, this); 
     }); 
} 

protected notifyErrors(error, that): Observable<any> { 
    that.logger.log(error); 
    return Observable.throw(error); 
} 
+0

'err => {this.notifyErrors (err, this); } 'funktioniert nicht. Der Compiler gibt mir: Argument des Typs '(err: any) => void' ist nicht dem Parameter des Typs 'zuordenbar (err: any, gefangen: Observable ) => ObservableInput <{}>'. – vinnylinux

+0

Versuchen Sie, den Typ von notifyErrors zu entfernen (Fehler: beliebig – Mardok

+0

Oder Gunters Antwort verwenden. – Mardok

Verwandte Themen