我正尝试从JSON数据创建一个 accordion 。
我正在从json-server调用GET请求,并且能够成功调用API。
我无法访问变量tileData
中children
的属性,显示错误:
类型“Tile[]”上不存在属性“children”。
不知道我哪里做错了。
tileData!: Tile[];
getTileData() {
this.tileService.showTile().subscribe((data: any) => {
this.tileData = data;
console.log('this.tileData.children.name :>> ', this.tileData.children.name ); //Shows error
});
}
服务文件中的函数为
showTile() {
return this.http.get<Tile[]>('http://localhost:3000/data');
}
我已经创建了一个接口来存储获得的JSON数据,如下所示:
export interface Tile {
name: string;
image: string;
children: { name: string; image: string; url: string };
}
我的JSON数据接收如下:
{
"data": [
{
"name": "First",
"image": "https://img.freepik.com/free-vector/football-2022-tournament-cup-background_206725-604.jpg?size=626&ext=jpg",
"children": [
{
"name": "Firstone",
"image": "https://img.freepik.com/free-vector/hand-painted-watercolor-abstract-watercolor-background_23-2149005675.jpg?size=626&ext=jpg",
"url": "http://www.google.com"
},
{
"name": "Firsttwo",
"image": "https://img.freepik.com/free-vector/hand-painted-watercolor-abstract-watercolor-background_23-2149005675.jpg?size=626&ext=jpg",
"url": "http://www.google.com"
},
{
"name": "Firstthree",
"image": "https://img.freepik.com/free-vector/hand-painted-watercolor-abstract-watercolor-background_23-2149005675.jpg?size=626&ext=jpg",
"url": "http://www.google.com"
}
]
},
{
"name": "Second",
"image": "https://img.freepik.com/free-vector/football-2022-tournament-cup-background_206725-604.jpg?size=626&ext=jpg",
"children": [
{
"name": "Secondone",
"image": "https://img.freepik.com/free-vector/hand-painted-watercolor-abstract-watercolor-background_23-2149005675.jpg?size=626&ext=jpg",
"url": "http://www.google.com"
},
{
"name": "Secondtwo",
"image": "https://img.freepik.com/free-vector/hand-painted-watercolor-abstract-watercolor-background_23-2149005675.jpg?size=626&ext=jpg",
"url": "http://www.google.com"
},
{
"name": "Secondthree",
"image": "https://img.freepik.com/free-vector/hand-painted-watercolor-abstract-watercolor-background_23-2149005675.jpg?size=626&ext=jpg",
"url": "http://www.google.com"
}
]
}
]
}
2条答案
按热度按时间cpjpxq1n1#
第一期
您的JSON响应是一个包含
data
属性的对象,Tile[]
。使用rxjs中的
map
返回Observable<Tile[]>
。第二期
而
children
属性是数组而不是对象。第3期
要打印出
name
,需要从每个title
对象迭代titleData
和children
数组。Demo @ StackBlitz
3mpgtkmj2#
你没有提到这个错误,但是接口定义应该使用你在数据中使用的确切名称。
尝试