angular - ngfor 不显示
问题描述
提供者工作,但 *ngFor 不显示。
在下图中,您可以看到提供程序加载数据但未显示在屏幕上。
有什么问题?API 正确返回数据,只有视图没有发生。
代码.html
<ion-header>
<ion-navbar>
<button ion-button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>Deputado</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<ion-item>
<ion-label color="primary" stacked>Qual deputado?</ion-label>
<ion-input type="text" (input)="buscarDeputado($event, searchKey)"></ion-input>
</ion-item>
<ion-list>
<ion-item *ngFor="let deputado of deputados" (click)="selecionarDeputado($event, deputado)">
<ion-avatar item-left>
<img src="https://www.camara.leg.br/internet/deputado/bandep/{{deputado.id}}.jpg"/>
</ion-avatar>
<h2>{{deputado.nome}}</h2>
<p class="item-description">{{deputado.siglaPartido}}</p>
</ion-item>
</ion-list>
</ion-content>
代码.ts
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { CamaraProvider } from '../../providers/camara/camara';
import { DetalhedeputadoPage } from '../detalhedeputado/detalhedeputado';
@IonicPage()
@Component({
selector: 'page-deputado',
templateUrl: 'deputado.html',
providers: [
CamaraProvider
]
})
export class DeputadoPage {
deputados: Array<any>;
constructor(public navCtrl: NavController, public navParams: NavParams,private camaraProvider: CamaraProvider) {
}
buscarDeputado(event, key) {
if(event.target.value.length > 2) {
this.camaraProvider.getDeputado(event.target.value).subscribe(
data => {
this.deputados = data.results;
console.log(data);
}
);
}
}
selecionarDeputado(event, deputado) {
this.navCtrl.push(DetalhedeputadoPage, {
deputado: deputado
});
}
}
提供者.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class CamaraProvider {
private baseApiPath = "https://dadosabertos.camara.leg.br/api/v2/";
constructor(public http: Http){
}
getDeputado(deputadoName) {
var url = this.baseApiPath + 'deputados?nome=' + encodeURI(deputadoName);
var response = this.http.get(url).map(res => res.json());
return response;
}
}
提供程序完美运行,但未在页面上显示结果。
解决方案
看起来您没有在buscarDeputado
函数中获得正确的值。您附加的图像没有任何results
价值。在buscarDeputado
函数中,尝试更改this.deputados = data.results;
为this.deputados = data.dados;
.
buscarDeputado(event, key) {
if(event.target.value.length > 2) {
this.camaraProvider.getDeputado(event.target.value).subscribe(
data => {
this.deputados = data.dados;
console.log(data);
}
);
}
}
推荐阅读
- python - 无法从家庭 brew 安装包中的“lxml”导入名称“etree”,但在 python shell 中很好
- python - ImportError:无法导入名称“Class_name2”
- docker - 未设置因 JAVA_HOME 失败的 CloudBuild fastlane 任务,并且在您的 PATH 中找不到“java”命令
- sapui5 - 嵌入列表时的 UploadCollection instantUpload="false"
- java - 将内容上传到 AWS S3 并通过 Cloudfront 提供内容
- c++ - 如何在 C++ 中正确地从 ROS 发送数组?
- javascript - Javascript - 如何在 HTML 中显示 SessionStorage obj
- sql - 如何根据连接查询更新多行
- r - GGally::ggpairs 图不显示相关系数
- python - 在一个范围内调用一次函数