2017-03-27 5 views
1

Ich erhalte den folgenden Fehler, der nur in IE/Edge angezeigt wird.Kann die Eigenschaft '0' von undefiniertem oder Null-Verweis nicht erhalten

Unable to get propety '0' of undefined or null reference 

enter image description here I RxJs Observablen auf folgende Weise bin mit:

getVersions(): void { 
    this.databaseService.getProductVersions().subscribe(
    (versions) => this.processVersions(versions), 
    (error) => console.error(error) 
); 
} 

und in Chrom/Firefox funktioniert dies ohne Fehler. productVersions sieht wie folgt aus:

getProductVersions(): Observable<any[]> { 
    let options = this.header(); 
    let url: string = this.baseUrl + 'admin/version/searchall'; 
    return this.http.get(url, options).map(
     response => response.json(), 
     error => console.log(error) 
    ); 
} 

Bin ich falsch die beobachtbare verwenden. Sollte ich mich abmelden? (Mein api-Ruf ist endlich, also von dem, was ich gelesen habe, ist das Abmelden nicht notwendig).

Antwort

0

Ich dachte, ich hätte die 3rd-Party-Bibliothek ausgeschlossen, die ich benutzte. Aber ich habe festgestellt, dass es dort passiert ist. Es war also nicht mein Code, der das Problem verursacht hat. Danke @Martin und @Jakub für deine Hilfe. Ich benutze jetzt zumindest dank dir die Karten/Fangmethoden richtig.

0

So viel, wie ich weiß, .map Operator kann nicht mit Fehlern umgehen, so dass es keine Verwendung von es ist. RxJS bietet .catch Methode, die dafür verantwortlich ist.

Versuchen Sie, es zu beheben, Wenn das die Dinge nicht richtig machen würde, werden wir eine andere Lösung finden. Ich habe keine IDE mehr, um es selbst zu testen, also vergib mir. =)

0

Aus dem Bild, das Sie zur Verfügung gestellt, dass der Fehler in der __tryOrUnsub Methode, die eine interne Methode genannt wird beim Abmelden (oder Abschluss) ein Beobachter ausgelöst wird.

Die Frage ist, warum es passiert, und ich bin verdächtig, dass der Fehler von this.processVersions(...) Anruf kommt. Ansonsten sieht Ihr Code gut aus, beachten Sie jedoch, dass der zweite Parameter des Operators map() verwendet wird, um den benutzerdefinierten this Kontext festzulegen (siehe http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-map).

In Ihrem Code setzen Sie this auf eine Funktion (error) => console.error(error), aber das sollte kein Problem sein.

Verwandte Themen