Ich versuche, Daten von meiner Service-Funktion abzurufen, aber es treten Probleme auf. Mein LandingPage-Komponentencode, der unten angezeigt wird, sendet einen Tastendruck an meine Servicefunktion, die ein Objekt zurückgibt, das mit Daten voll ist.Abrufen von Objektdaten von einem Dienst in Angular 2
Aber ich kann das Service-Objekt nicht zu meiner LandingPage zurückkehren. Hier ist, wie ich meinen Dienst erstellen:
task.service.ts
addKey(keystroke) {
const query = "https://api.themoviedb.org/3/search/tv?api_key=";
fetch(query + key + '&language=en-US&query=' + keystroke)
.then((show) => {
show.json().then((obj) => {
// grab the items we want from the response
let resultItems = obj.results.map((show, index) => {
return {
id: show.id,
poster: show.poster_path,
rating: show.vote_average,
backdrop: show.backdrop_path,
};
});
// return our newly formed object
return { data: resultItems }
});
});
}
Hier ist, wo ich versuche, die Service-Daten zu empfangen, in meinem:
landingpage.component. ts
getKey(keystroke) {
this.TaskService.addKey(keystroke)
.subscribe(res => {
this.shows = res.data; // trying to receive service info here
});
}
Wenn ich zu bauen versuchen, erhalte ich die folgenden Fehler in meinem Landing com Komponente:
Die Eigenschaft 'subscribe' existiert nicht beim Typ 'void'.
Ich habe versucht, Karte anstelle von abonnieren, aber es gibt einen ähnlichen Fehler zurück.
Wie kann ich das Objektergebnis von meinem Dienst an meine Komponente senden?
addKey(keystroke): Observable<any> {
const query = "https://api.themoviedb.org/3/search/tv?api_key=";
return this.http.get(query + key + '&language=en-US&query=' + keystroke)
.map(show => {
show.json().then((obj) => {
// grab the items we want from the response
let resultItems = obj.results.map((show, index) => {
return {
id: show.id,
poster: show.poster_path,
rating: show.vote_average,
backdrop: show.backdrop_path,
};
});
// return our newly formed object
return { data: resultItems }
});
});
}
Wenn Sie Sie wirklich holen wollen verwenden können, wenn:
Vielen Dank für die Antwort! Dies gibt mir immer noch den gleichen Fehler, nicht sicher warum. Ich versuche auch, {data: resultItems} an die Komponente – Edon
zurückzugeben, Sie benötigen möglicherweise auch die Methode return signature (die Antwort wurde aktualisiert, um diese einzuschließen) Ist dies ein Laufzeitfehler oder ein Zeitfehler? – 0mpurdy
danke! Dies ist ein transpilierbarer Zeitfehler, ich denke, dass das Observable die richtige Richtung sein kann, immer noch ein bisschen Ärger, hier zu sehen: http://i.imgur.com/2HxvyNQ.png – Edon