私はhttp呼び出しを行い、ローカルjsonファイルからデータを取得しています。応答が遅れているため、テンプレートに応答データを表示できません。ang2クラスの変数へのHTTP応答の設定
サービスがjsonファイルからデータを取得するためのHTTP呼び出しを行っています。
export class DataBook {
bookDetails: Array<Object>;
constructor(public http: Http) {
this.bookDetails = [];
}
makeDataReady(){
this.http.get('assets/preloaded-data/booksummaries.json')
.map(res => res.json())
.subscribe(
data => this.bookDetails = data,
error => alert(error),
() => console.log(this.bookDetails) //output the json file content
);
}
appendBook(book:Object)
{
this.bookDetails.push(book);
}
getBooks():Array<Object>
{
return this.bookDetails;
}
}
以下のコンポーネントは、httpコールを開始するように呼び出しています。
export class ShowreviewPage {
items: Object;
ngOnInit(){
this.items = this.dataBook.makeDataReady();
}
constructor(public navCtrl: NavController, public navParams: NavParams, public dataBook: DataBook) {
this.items = this.dataBook.getBooks();
}
ionViewDidLoad() {
console.log("ion View did Load",this.items); // empty array output
}
}
私はAngular2を初めて使っています。なぜ私は応答に遅れがあるのか理解するのに苦労していますか?
HTTPコールをngOnInitに入れました。これは動作を停止しました。 – forethought
HTTPコールはサービス内にあります。私はそこにngOnInitを使用することはできません – forethought