2017-05-01 4 views
0

Ich habe Probleme, herauszufinden, wie Toastr in meiner HandlerError-Funktion zu haben. Als ich es der Fehler laufen erhalte ich istWie Toastr in HTTP-Catch-Funktion hinzufügen?

'Fehler' undefinierter

Hier ist mein Code

private handlerError(error: any) { 

    var errorMessage = 'Server error'; 

    this.toastrService.error(errorMessage); <-- This doesn't work 

    return Observable.throw(errorMessage); 
} 

es wie

post(url, data): Observable<any> {  
    this.toastrService.error('hey'); // <-- This works 
return this.http.post(CONSTANT.API_URL + url, data, { 
    headers: this.createAuthorizationHeader() 
}). 
    map((res:Response) => { return this.toCamel(res.json()) }). 
    catch(this.handlerError); 
} 

Toastr aufgerufen wird wird injiziert

constructor(private http: Http, private toastrService: ToastrService) {} 

Antwort

1

Änderung

catch(this.handlerError); 

zu

catch(error => this.handlerError(error)) 

Wenn Sie wie this.handlerError Ihre Methode für dieses Objekt in handlerError nennen ist Window

Wenn Sie das tun error => this.handlerError (Fehler) - Dieser Fehler weist auf eine Klasseninstanz hin.

Dies ist ein Standard-JavaScript-Verhalten.

class A { 
    classAContext() { 
    return()=>this.fn(); 
} 

windowContext() { 
    return this.fn; 
    } 

fn() { 
    console.log(this); 
} 
} 

lassen ein Objekt erstellen:

let a = new A(); 

diese Linie Fenster

a.windowContext()(); 

diese Linie A {} druckt

a.classAContext()(); 
+0

gedruckt wird, die so seltsam ist. Danke – Demodave

+0

ich fügte zusätzliche Erklärung hinzu –

Verwandte Themen