【发布时间】:2021-06-27 04:26:39
【问题描述】:
我发出了一个非常普通的 HTTP 请求来从 JSON 文件中获取一个对象。但我注意到我得到了所有文件的数据,而不是唯一需要的对象。 遵循我的代码演示了我如何创建一个类来获取所需的数据,但由于某种原因它仍然无法按计划工作。
JSON 文件 (DB.json) => 我只需要(文章)
{
"articles": [
{
"id": "1",
"title": "Title 1",
"body": "what ever ... ",
"date": "14/03/2020",
"rating": 4,
"pic": "../../assets/images/cat.jpg"
},
{
"id": "2",
"title": "Title 2",
"body": "what ever ... ",
"date": "15/03/2020",
"rating": 5,
"pic": "../../assets/images/dog.jpg"
}
],
AnotherTableName [ ... etc ],
AnotherTableName [ ... etc ]
}
article.ts => 类
export class Article {
id: string;
title: string;
body: string;
date: Date;
rating: number;
pic: string;
}
组件.ts
export class ArticleComponent implements OnInit {
constructor(private httpGetArticles: ArticleService) { }
errMess: string;
articles: Article[];
ngOnInit(){
this.httpGetArticles.getArticles().subscribe(
data => this.articles = data,
errmess => this.errMess = <any>errmess,
() => console.log(this.articles));
}
}
component.html
<p *ngFor="let artcl of articles">
<span>artcl.title</span>>
</p>
服务
getArticles(): Observable<Article[]> {
return this.http.get<Article[]>("./assets/DB.json")
.pipe(catchError(this.handleHttpErrService.handleError));
}
console.log(.. 结果
Object {
articles: Array [ {…}, {…} ]
feedback: Array(13) [ {…}, {…}, {…}, … ]
leaders: Array(4) [ {…}, {…}, {…}, … ]
promotions: (1) […]
尽管我得到了如图所示的对象,但我也得到了以下错误(我认为是因为我将 NgFor 用于一个名为文章的对象,但检索到的数据提出了一种不同的格式“整个 JSON 文件”)
ERROR Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.
所以我只需要检索转换后的数据(文章)而不是所有 JSON 文件
【问题讨论】:
标签: json angular typescript angular-http