无法从 JSON 获取某些数据,返回未定义的 Angular 6



我正在尝试从这个 JSON 中提取"数据",但它一直抛出未定义的结果。

我收到此错误的代码摘录:

ngOnInit(): void {
this.testService.getTestWithObservable().subscribe(
res => {
let user = res["users"];
let user_data = user["data"];
this.user_data = user_data;
console.log(user_data);
console.log(res);
}
);
}

res 输出整个 JSON,但user_data抛出:

错误类型错误:无法读取未定义的属性"数据" 在SafeSubscriber._next

杰伦

[{
"id": 1,
"users": {
"user_id": 14,
"data": [{
"name": "James",
"age": 20
},
{
"name": "Damien",
"age": 25
}]
}
}
{
"id": 2,
"users": {
"user_id": 11,
"data": [{
"name": "James",
"age": 20
},
{
"name": "Damien",
"age": 25
}]
}
}]

您的 JSON 是一个数组,因此您需要使用索引或循环来访问您的某个项目,如下所示:

ngOnInit(): void {
this.testService.getTestWithObservable()
.subscribe(
res => res.forEach(user => this.user_data = [...(this.user_data || []), user['users']['data']]);
);
}

或:

ngOnInit(): void {
this.testService.getTestWithObservable()
.subscribe(
res => this.user_data = res[0]['users']['data']);
);
}

第一个代码将在user_data数组中存储每个用户的所有data属性

结果是数组,所以你必须使用索引来访问数组数据,

this.testService.getTestWithObservable()
.map( result => result.map( i => i.users.data) )  // array of data array
.subscribe(
res => {
this.user_data = [];
res.forEach(i => this.user_data(...i));
console.log(this.user_data); // all users data as array 
}
);
}

循环抛出 ngFor 的数据

<div *ngFor="let user of user_data">
{{user.name}} , age : {{user.age}}
</div>

最新更新