2016-08-11 5 views
1

Ich habe mich gefragt, ob mir jemand helfen könnte, meine Daten anzuzeigen.Anzeigen von JSON-Daten in einer Vorlage

Ich habe einen benutzerdefinierten Anbieter, der meine API aufruft, die alle perfekt funktioniert.

Die Seite im mit arbeitet ‚spielen‘ und meine playing.ts Datei sieht wie folgt aus

import { Component } from '@angular/core'; 
import { NavController } from 'ionic-angular'; 
import { PlayingService } from '../../providers/playing-service/playing-service'; 

@Component({ 
    templateUrl: 'build/pages/playing/playing.html', 
}) 

export class PlayingPage { 

    sports: any; 

    constructor(private playing: PlayingService, private navCtrl: NavController) { 
     this.loadSports(); 
    } 

    loadSports() { 
     this.playing.getAllSports() 
      .then(data => { 
       this.sports = data; 
       console.log(data); 
      }); 
    } 

} 

das Konsolenprotokoll zeigt die folgende:

array description here Meine playing.html Datei sieht aus wie die folgende

<ion-content padding class="playing-screen"> 
    <ion-list> 
    <ion-item *ngFor="let sport of sports" > 
     <h3>{{sport}}</h3> 
    </ion-item> 
    </ion-list> 
</ion-content> 

der Fehler im bekommen ist wie folgt:

Ein anderes unterstützendes Objekt '[Objekt Objekt]' vom Typ 'Objekt' kann nicht gefunden werden. NgFor unterstützt nur die Bindung an Iterables wie Arrays

Im ein wenig verwirrt, im mit ionischen 2 beta arbeiten 11

Jede Hilfe wäre sehr geschätzt.

Frieden!

+0

Ich kann es nicht testen, aber es sieht aus wie Ihre 'any' in eine Art von Array geändert werden muss. Sehen Sie sich https://angular.io/docs/ts/latest/guide/server-communication.html an. Die Klasse HeroListComponent hat ein gutes Beispiel. Möglicherweise müssen Sie ein Typoskript-Objekt namens "Sport" erstellen, in das Sie Ihre Sportdaten einfügen können. –

+0

Ich denke, Sie müssen {{sport.sportname}} tun. oder irgendeine andere Eigenschaft, die Sie wollen. –

Antwort

0

ich die Antwort herausgefunden Incase jemand in der gleichen Ausgabe läuft.

In meinem Provider, wenn ich ein neues Versprechen erstellen und ausführen mein http bekommen, ich hatte die folgende Zeile

.map(res => res.json()) 

Ich brauchte die zurückgegebene Array-Namen in der res.json() hinzufügen, meine so fix war das bearbeiten der Zeile wie folgt:

.map(res => res.json().sports) 

ich hoffe das kann jemand helfen.

Frieden!

2

Die Fehlermeldung ist ziemlich einfach. NgFor funktioniert nur für Arrays (oder array-ähnliche iterables). Sie können damit kein Objekt iterieren.
Was Sie iterieren wollen, ist das sports Array in Ihrem data Objekt, so dass die Lösung ist einfach:

loadSports() { 
    this.playing.getAllSports() 
     .then(data => { 
      this.sports = data.sports || []; //for safety 
     }); 
} 
+0

Ich erhalte folgende Fehlermeldung Die Eigenschaft 'Sport' existiert nicht beim Typ '{}'. – BigJobbies

+0

Dies ist nur ein Typoskript Fehler. Sie können es ignorieren oder es abstellen, indem Sie angeben, dass 'data' vom Typ' any' sein soll: 'this.playing.getAllSports(). Then ((data: any) => {...' – yarons

Verwandte Themen