angular - 如何在 Angular 2 中检索数据?
问题描述
我正在使用 post 方法。
这是我的ts
文件:
viewt(testid)
{
$('#myModal22').modal('show');
var param2 = {
testid:testid,
}
this.service.get_tquestion(param2).subscribe(data => {
this.test_question1 = data;
console.log(data);
console.log(this.test_question1);
});
}
还有HTML代码:
<ng-container *ngFor="let v of test_question1">
<tr >
<td>{{v.questionid}}</td>
<td>{{v.questionname}}</td>
</tr>
</ng-container>
和服务部分:
get_tquestion(param) {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
// this.createAuthorizationHeader(headers);
return this.http.post(
this.base_url + "test/getquestion", param, {headers: headers })
.map((res: Response) => res.json());
}
API响应是这样的:
找不到“object”类型的不同支持对象“[object Object]”。NgFor 仅支持绑定到 Iterables,例如 Arrays。
我得到的回应是:
{"Code":200,"Results":[{"questionid":1034,"questionname":"找出下面句子中的形容词。午餐我们带了几个三明治。(Hard)","duration":60 }]}
但我无法以 HTML 格式显示。
解决方案
您将整个响应从 API 传递给test_question1
变量。由于 response 是一个对象并且它不是 Iterable ,因此您不能将它与ngFor
指令一起使用。要解决此问题,您可以例如从服务返回数据数组:
return this.http.post(this.base_url + "test/getquestion", param, { headers: headers })
.map((res: Response) => res.json().Results);}
或在订阅中分配响应对象的属性:
this.test_question1 = data.Results;
推荐阅读
- npm - 意外的 npm 发布后,我的代码是否会永久发布在互联网上?
- python - 如何使用随机数创建嵌套列表?
- google-apps-script - Google Sheets + Apps 脚本:如何根据单元格的值按名称删除工作表
- java - Tyk API 网关每 60 秒重试一次请求
- java - 如何在另一种方法中使用变量?
- r - 如何按照 R 中的属性顺序对向量进行排序?
- c# - 访问属性属性的更短方法,无需访问它两次
- java - 最大堆和最小堆初始化 (Java) 优先级队列
- spring-boot - 如何在 Lettuce 6 Spring Boot 2.4 中配置客户端缓存
- android - nativescript 在远程模拟器上运行代码