2016-09-03 8 views
1

so versuche ich Daten von Api abzurufen und mit TastenauswahlWinkel 2 Objektschlüssel Auswahl

app/app.component.ts

import {Component} from 'angular2/core'; 
import {Http} from 'angular2/http'; 
import {httpServiceClass} from './service'; 
import {HTTP_PROVIDERS} from 'angular2/http'; 
import {Observable} from 'rxjs/Observable'; 
import {Api} from './api'; 
@Component({ 
selector: 'my-app', 
templateUrl: 'mytemplate.html', 
providers:[httpServiceClass,HTTP_PROVIDERS] 
}) 
export class AppComponent implements OnInit{ 
private api:Api[]; 
constructor(private getservice:httpServiceClass){ 

} 


ngOnInit(){ 
this.getservice.httprequest() 
    .subscribe(data => this.api = data); 

    } 

    } 

Servicedatei

app/App abrufen kann nicht .service.ts

 import {Injectable} from 'angular2/core'; 
     import {Http, HTTP_PROVIDERS} from 'angular2/http'; 
     import 'rxjs/add/operator/map'; 
     import {Observable} from 'rxjs/Observable'; 
import 'rxjs/Rx'; 
import {Api} from './api'; 

@Injectable() 
export class httpServiceClass{ 
    constructor(private http: Http){} 



    httprequest(): Observable<Api[]>{ 
     return this.http.get(' http://date.jsontest.com') 
      .map(response => response.json()); 
    } 
} 

api.ts

export interface Api{ 
    time:string; 
    date:string; 
} 

mytemplate.html

<h1 >HTTP : {{api|json}}</h1> 

kehrt HTTP: { "Zeit": "01.52.41", "milliseconds_since_epoch": 1472910761126, "Datum": "2016.09.03"}

habe ich versucht, durch Schlüssel

<h1 >HTTP : {{api.time}}</h1> 

kehrt in Konsole

AUSNAHME Auswahl: Kann nicht finden Unterstützendes Objekt unterscheiden [Objekt Objekt] 'in [API in AppComponent @ 0: 4]

+0

deklarieren Sie 'api' als ein Array von Daten:' Api [] 'in' AppComponent'. Wenn Sie dann 'api | json' in der Vorlage anzeigen, sehen wir, dass es sich um ein Objekt handelt. Du solltest zuerst deinen Code reparieren. – jobou

+0

Bin jetzt verwirrt, welchen Typ soll ich 'api' deklarieren? –

+0

Ich denke, es sollte "Api" sowohl in "AppComponent" und "httprequest" sein. Beachten Sie, dass Sie das OnInit-Ereignis nicht importieren. Sie importieren './Service', aber Ihre Datei heißt' app.service.ts'. Es gibt so viele kleine Fehler. Andere Leute, die Ihren Fehler haben, benutzen fast immer eine '* ngFor'-Schleife irgendwo in ihrer Vorlage. Benutzt du es? – jobou

Antwort

0

Eine Schnittstelle in Runtime ist nichts in Javascript World. Versuchen Sie, Ihre Schnittstelle in die Klasse zu ändern und festzustellen, ob das Problem dadurch behoben wird. Dann Refraktor den Code entsprechend.

+0

versucht, dass vorher ..didnot nicht –

+0

Ich würde vorschlagen, zu schaffen, es zu plotten Welt leicht zu reparieren ... –