Winkel 4 Anzeige der JSON-Daten aus HTTP-Get-Anfrage
Habe ich eine einfache Winkel-4-Anwendung, die die Kontaktaufnahme mit einem HTTP-REST-server und dieser server ist einfach der RÜCKFÜHRUNG einer JSON-Nutzlast, und ich möchte, um dieses JSON-Nutzlast, wie in den browser. Dies ist mein makeRequest Typoskript Funktion:
import { Component, OnInit } from '@angular/core';
import {Http, Response} from '@angular/http';
@Component({
selector: 'app-simple-http',
templateUrl: './simple-http.component.html'
})
export class SimpleHttpComponent implements OnInit {
data: string;
loading: boolean;
constructor(private http: Http) {
}
ngOnInit() {
}
makeRequest(): void {
this.loading = true;
this.http.request('http://jsonplaceholder.typicode.com/posts/1')
.subscribe((res: Response) => {
this.data = res.json();
this.loading = false;
});
}
}
Den Aufruf http://jsonplaceholder.typicode.com/posts/1 gibt mir die folgende JSON:
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
Ich jetzt diese Anzeige in meinem html-Komponente:
<h2>Basic Request</h2>
<button type="button" (click)="makeRequest()">Make Request</button>
<div *ngIf="loading">loading...</div>
<pre>Data Obtained is: {{ data }}</pre>
Aber im browser, ich sehe dies:
Wie mache ich mein JSON angezeigt wird?
InformationsquelleAutor sparkr | 2017-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die json-Rohr. In Ihrer Vorlage:
Außerdem müssen Sie ändern Sie den Typ Ihres
data
Eigenschaftany
stattstring
.Ich bekomme immer noch zu sehen, nur diese: Daten: {"id":1}
Was ist, wenn Sie eine Konsole.anmelden(das.Daten), enthält es die gesamte json-Sie erwarten oder genau das, was wird in der Ansicht angezeigt werden?
Wo lege ich diese Konsole.anmelden(das.Daten)? In meinem Typoskript-Datei?
Ja, richtig, nachdem Sie
this.data = res.json();
. Dann müssen Sie an Ihrem browser die Konsole-Fenster zur Laufzeit.InformationsquelleAutor Andrei Matracaru
Haben Sie zwei Möglichkeiten:
Verwenden der built-in-Rohr JsonPipe (
this.data
sollte vom Typany
):<pre>Data Obtained is: {{ data | json }}</pre>
Holen Sie sich die JSON-string manuell:
this.data = JSON.stringify(res.json()); //data is a string :)
oder
<pre>Data Obtained is: {{ JSON.stringify(data) }}</pre>
Müssen Sie verstehen, dass ein beliebiger Wert in einem template wird über den Aufruf der
.toString()
Methode, so ein basic-Objekt (so etwas wie{key: value}
) zeigt nur[object Object]
Hier haben Sie eine arbeiten demo, überprüfen Sie die app.ts-Datei, die die ajax-call und die Vorlage mit der json-Rohr ist da.
Daten zu Erhalten: {"id":1}
Seltsamerweise sehe ich nicht den ganzen JSON-Nachricht!
Hast du irgendwelche Hinweise?
siehe meine aktualisierte Antwort 😉
InformationsquelleAutor Pablo Lozano