2017-11-22 1 views
1

Ich versuche, extrahierte Daten aus einer API anzuzeigen. Ich mache das so erfolgreich, wie es in der Konsole sichtbar ist. Ich laufe auf einen Fehler tho, wenn ich versuche, die Daten in ein Array zu setzen.Angular: Kann die Eigenschaft '0' von undefined nicht lesen

Schnittstellen:

interface ISearchResponse { 
    appendix: IAppendix; 
} 

interface IAppendix { 
    Airports:IAirport[]; 
} 

interface IAirport { 
    name: string; 
    city:string; 
} 

Der Code, wo das Problem ist:

ngOnInit() { 
    console.log('SC: in OnInIt'); 
    this._searchEngine.getSites().subscribe(sites => { 
     this.airports = sites; 
     console.log("SC: SITES:"+this.airports.appendix.Airports[0].name); 

    }, 
     error => this.errorMessage = <any>error); 
    } 

Der Fehler:

ERROR TypeError: Cannot read property '0' of undefined 
+0

Bitte schließen Sie Ihre Klassen ein, die Ihre Schnittstellen implementieren. – Daryl

Antwort

0

Ich habe es gelöst. Was ich falsch gemacht habe war, dass ich 'Airports' eine Hauptstadt 'A' gegeben habe. Wenn die JSON-Daten es als "Flughäfen" hatten. Daher ging nichts in das Array, da es nicht existierte.

2

this.airports.appendix.Airports könnte manchmal leer sein, hinzufügen einen Scheck vor Zugriff auf el Elemente mit Index

this.airports = sites; 
if(this.airports.appendix.Airports && this.airports.appendix.Airports.length > 0){ 
    console.log("SC: SITES:"+this.airports.appendix.Airports[0].name); 
} 
+0

Danke für deine Antwort, leider löst das den gleichen Fehler aus. – JohnDoe

+0

Wie stelle ich sicher, dass Daten in das Array gelangen? – JohnDoe

+0

Es ist in Ordnung, Was ich falsch gemacht habe war, dass ich 'Airports' eine Hauptstadt 'A' gegeben habe. Als der JSON es als "Flughäfen" hatte. Daher ging nichts in das Array. – JohnDoe

Verwandte Themen