我正在使用Ionic 2和Angular 2处理应用程序。现在我尝试从API中获取数据并在页面上显示。
我可以记录数据,我认为这是正确的,但由于某些原因,页面本身没有显示任何内容:
我从中接收数据的API位于:http://peerligthart.com/grotekerk/v1/api.php/zerken?transform=1
* ng在我看来
<ion-content padding>
<h1 *ngFor="let z of zerken">
{{ z.naam }}
</h1>
</ion-content>
控制器
import { Component } from '@angular/core';
import { NavController, PopoverController } from 'ionic-angular';
import { PopoverPage } from '../popover/popover';
import { ZerkenProvider } from '../../providers/zerken';
@Component({
selector: 'page-lijst',
templateUrl: 'lijst.html',
providers: [ZerkenProvider]
})
export class LijstPage {
zerken: Array<any>;
constructor(public navCtrl: NavController, public popoverCtrl: PopoverController, public zerkenProvider: ZerkenProvider) {
this.zerkenProvider.getZerken().subscribe(
data => {
console.log(data.zerken);
this.zerken = data.zerken.results;
}
)
}
openPopover(event) {
let popover = this.popoverCtrl.create(PopoverPage);
popover.present({
ev: event
});
}
}
最后,提供商
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class ZerkenProvider {
static get parameters() {
return [[Http]];
}
constructor(public http: Http) {
}
getZerken() {
var url = "http://peerligthart.com/grotekerk/v1/api.php/zerken?transform=1";
var response = this.http.get(url).map(res => res.json());
return response;
}
}
那么,页面显示的是什么:
正如你所看到的......没什么。我希望有人有解决方案,亲切的问候!
------------- ------------- EDIT
我将this.zerken = data.zerken.results
更改为this.zerken
。这样做之后,它给了我一个错误:
答案 0 :(得分:6)
您的回复中的zerken
似乎没有results
个对象,所以
this.zerken = data.zerken.results;
应该是:
this.zerken = data.zerken;
请记住初始化组件中的数组:
zerken: Array<any> = [];
这样您就不会得到一个未定义zerken的错误,因为视图通常在收到数据之前呈现。初始化它会阻止它。
答案 1 :(得分:2)
您需要*ngIf
封装*ngFor
,因为zerken
是在以后获得的。{/ p>
尝试:
<ion-content padding>
<div *ngIf="zerken">
<h1 *ngFor="let z of zerken">
{{ z.naam }}
</h1>
</div>
</ion-content>
您还需要按@ AJT_82的其他答案中的说明设置zerken = data.zerken;
。