Ich bin sicher, dass das Problem über Asynchronisierung ist, aber ich konnte die Lösung nicht finden. Ich habe einen Dienst erstellt, der ein Array von JSON-Daten erhält. In meiner Komponente möchte ich diese Daten anzeigen, wenn die Seite geladen ist. Ich erhalte keine Daten, wenn die Seite geladen wird, aber ich habe eine Schaltfläche erstellt und dieselbe Funktion für das onclick-Ereignis verwendet. Ich bekomme die Daten auf Klick Ereignis. Was mache ich falsch?Kann Ajax-Daten nicht auf Init in Angular erhalten 2
meine Komponente
import { Component } from '@angular/core';
import {PostService} from './post.service';
@Component({
selector: 'app-root',
template: `
{{test}}
<ul>
<li *ngFor="let item of jsonArray">
{{item.title}} a
</li>
</ul>
<button on-click="onClick()">button</button>
`
})
export class AppComponent {
test;
jsonArray : any[];
constructor(private _postService : PostService){
}
onClick(){
this.jsonArray = this._postService.getPosts();
this.test = "clicked";
}
ngOnInit(){
this.jsonArray = this._postService.getPosts();
this.test = "init";
}
}
und meine Dienstklasse
import {Http} from '@angular/http'
import 'rxjs/add/operator/map';
import {Injectable} from '@angular/core';
@Injectable()
export class PostService {
private _url = "https://jsonplaceholder.typicode.com/posts";
jsonArray: any[];
getPosts():any[]{
//return this._http.get(this._url).map(res =>res.json());
this._http.get(this._url).subscribe(response => {
this.jsonArray = response.json();
console.log(response.json());
console.log("jsonArray",this.jsonArray);
});
return this.jsonArray;
}
createPost(post){
return this._http.post(this._url,JSON.stringify(post)).map(res =>res.json());
}
constructor(private _http:Http){
}
}
https://stackoverflow.com/documentation/angular2/3577/angular-rxjs-subjects-and-observables -mit-api-requests/12348/basic-request # t = 20170726145040649751 – JGFMK
Sie erhalten einen Fehler. Ich erstelle Ergebnis mit Ihrem Code. Erhalten Sie einen Fehler in der Konsole? –
keine Fehler, ich versuche, die Daten auf der Seite nicht auf der Konsole zu sehen. Sehen Sie die Daten auf der Seite? @RajBahadurSingh – rematnarab