angular - *Ngfor 不显示数据
问题描述
我编写了一个简单的 Angular 6 代码,我在其中使用 get 和 HTTP 从 API 请求数据。当我运行时,似乎我正在获取数据,但 *NgFor 没有显示我的数据。我搜索了很多网站,但由于我没有收到任何错误,所以我找不到问题所在。
下面是我的 app.component.ts。
import { Component } from '@angular/core';
import {HttpClient,HttpParams, HttpHeaders} from '@angular/common/http';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
readonly ROOT_URL= 'https://api.coinmarketcap.com/v2'
posts: any;
data: any;
constructor(private http:HttpClient){}
getPosts(){
this.posts=this.http.get(this.ROOT_URL +'/listings').subscribe(data => {
console.log(data);
this.data = data;
});
const mapped = Object.entries(this.posts).map(([type, value]) => ({type,
value}));
}
//title = 'app';
}
这是我的 app.component.html
<h1>Get Cryptolist </h1>
<button class="btn btn-default" (click)="getPosts()">Cryptocurrency
list</button>
<div class="container m-t-10" >
<div *ngIf = "mapped">
<table >
<tbody>
<tr *ngFor="let post of mapped">
<td>{{post.id}}</td>
<td>{{post.name}}</td>
<td>{{post.symbol}}</td>
<td>{{post.website_slug}}</td>
</tr>
</tbody>
</table>
</div>
[enter image description here][1]</div>
解决方案
您mapped
在函数内声明常量,因此您无法在模板中访问它。在模板中只能访问类级别的变量。因此,在您的 app.component.ts 中,您应该在create mapped iemapped
行下方创建一个变量ie 。data: any;
mapped:any;
而在函数getPosts()
中,替换行
const mapped = Object.entries(this.posts).map(([type, value]) => ({type,
value}));
和
this.mapped = Object.entries(this.posts).map(([type, value]) => ({type,
value}));
此外,您需要将上面的行移到 http 调用的订阅处理程序中,即在该行下方,this.data = data;
因为它是异步的,如果您尝试直接在处理程序之外访问它, this.data 将是未定义的。试试看,如果您的服务正确返回数据,它将显示数据。希望能帮助到你。
推荐阅读
- php - PHP - 查找数组的 FFT
- node.js - 如何修复节点文件系统写入功能?
- python - Python 将键值对从 dict、list、dict 结构的各个层解压缩到嵌套在 JSON 对象中的单独 JSON 数组中
- sql-insert - Snowflake:IFNULL 不能在 INSERT VALUES 的 subSQL 中使用
- javascript - axios.all() 使用最后一个请求配置
- angular - 测试导出的常量对象
- sql - 更新语句给出表别名错误
- c# - Azure 函数 - 在 Visual Studio 2017 中为不同环境添加不同的设置文件
- powerbi - 如何使用 Power BI 从 Order 表中查找没有匹配 LineItem 行的行?
- dynamics-crm - 从 ADFS CRM 到 Sharepoint 的问题