Can';t使用Angular 6打印嵌套的JSON数据
我正在学习编码,但在Angular 6中遇到了这个问题,我似乎无法解决这个问题。我以前能够获取JSON的数据,但现在它是嵌套的,我不知道如何获取它的数据。这就是我到目前为止所做的 服务Can';t使用Angular 6打印嵌套的JSON数据,json,angular,typescript,nested,ngfor,Json,Angular,Typescript,Nested,Ngfor,我正在学习编码,但在Angular 6中遇到了这个问题,我似乎无法解决这个问题。我以前能够获取JSON的数据,但现在它是嵌套的,我不知道如何获取它的数据。这就是我到目前为止所做的 服务 import { Injectable } from '@angular/core'; import { Http, Response } from '@angular/http'; import { Observable } from 'rxjs'; import 'rxjs/add/operator/map
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/toPromise';
@Injectable()
export class TestService {
url = "http://localhost:80/assets/data/test.json";
constructor(private http:Http) { }
getTestWithObservable(): Observable<any> {
return this.http.get(this.url)
.map(this.extractData)
.catch(this.handleErrorObservable);
}
private extractData(res: Response) {
let body = res.json();
return body;
}
private handleErrorObservable (error: Response | any) {
console.error(error.message || error);
return Observable.throw(error.message || error);
}
}
HTML
{{x.name}
如果有人能指出解决方案或我做错了什么,我将不胜感激。您需要将数据保存在实例属性中才能访问它<代码>用户_数据是您的函数的本地数据,您无法在模板中访问它,因此您应该使用如下内容:
export class TestComponent implements OnInit {
observableTest: Observable<any>
errorMessage: String;
user_data: any;
constructor(private testService: TestService) { }
ngOnInit(): void {
this.testService.getTestWithObservable().subscribe(
res => {
let user = res[0]['users'];
let user_data = user['data'];
console.log(user_data['name']);
this.user_data = user_data; // here
}
);
}
}
导出类TestComponent实现OnInit{
可观察的
错误消息:字符串;
用户数据:任何;
构造函数(私有testService:testService){}
ngOnInit():void{
this.testService.getTestWithObservable().subscribe(
res=>{
让user=res[0]['users'];
让user_data=user['data'];
日志(用户_数据['name']);
this.user\u data=user\u data;//此处
}
);
}
}
您需要将数据保存在实例属性中才能访问它<代码>用户_数据是您的函数的本地数据,您无法在模板中访问它,因此您应该使用如下内容:
export class TestComponent implements OnInit {
observableTest: Observable<any>
errorMessage: String;
user_data: any;
constructor(private testService: TestService) { }
ngOnInit(): void {
this.testService.getTestWithObservable().subscribe(
res => {
let user = res[0]['users'];
let user_data = user['data'];
console.log(user_data['name']);
this.user_data = user_data; // here
}
);
}
}
导出类TestComponent实现OnInit{
可观察的
错误消息:字符串;
用户数据:任何;
构造函数(私有testService:testService){}
ngOnInit():void{
this.testService.getTestWithObservable().subscribe(
res=>{
让user=res[0]['users'];
让user_data=user['data'];
日志(用户_数据['name']);
this.user\u data=user\u data;//此处
}
);
}
}
您的代码有一些问题:
export class TestComponent implements OnInit {
observableTest: Observable<any>
errorMessage: String;
user_data: any;
constructor(private testService: TestService) {
}
ngOnInit(): void {
this.testService.getTestWithObservable().subscribe(
res => {
let user = res[0]["users"];
this.user_data = user["data"];
console.log(user_data["name"]);
}
);
}
}
使用HttpClient(Http已被弃用),可以为您完成.json()。您不需要extractData函数
- 您必须初始化变量。并用“this”来指代它
export class TestComponent implements OnInit {
observableTest: Observable<any>
errorMessage: String;
user_data: any;
constructor(private testService: TestService) {
}
ngOnInit(): void {
this.testService.getTestWithObservable().subscribe(
res => {
let user = res[0]["users"];
this.user_data = user["data"];
console.log(user_data["name"]);
}
);
}
}
使用HttpClient(Http已被弃用),可以为您完成.json()。您不需要extractData函数
- 您必须初始化变量。并用“this”来指代它
user\u data
是一个数组,因此您需要user\u data[0][“name”]
(虽然没有理由对属性使用方括号语法,但也可以使用user\u data[0].name
)此属性。user\u data=res[0]。users.data。解释:res是一个数组,res[0]是一个具有users属性的对象。users属性有一个属性数据,它是您在控制台获取数据时正在查找的数组。log?user_data
是一个数组,因此您需要user_data[0][“name”]
(虽然没有理由对属性使用方括号语法,但也可以使用user_data[0]。name
)这样做。user_data=res[0]。users.data。解释:res是一个数组,res[0]是一个具有users属性的对象。users属性有一个属性数据,它是您正在查找的数组OP的代码没有使用HttpClient
,因此需要extractData
。也就是说,代码几乎肯定应该更新为使用HttpClient
,谢谢你的提示,我已经选择了正确的答案,但是是的,这就是问题所在。很多人感谢OP的代码没有使用HttpClient
,因此需要extractData
。也就是说,代码几乎肯定应该更新为使用HttpClient
,谢谢你的提示,我已经选择了正确的答案,但是是的,这就是问题所在。许多双引号应改为单引号作为“用户”->“用户”,每个双引号应改为单引号作为“用户”->“用户”
export class TestComponent implements OnInit {
observableTest: Observable<any>
errorMessage: String;
user_data: any;
constructor(private testService: TestService) {
}
ngOnInit(): void {
this.testService.getTestWithObservable().subscribe(
res => {
let user = res[0]["users"];
this.user_data = user["data"];
console.log(user_data["name"]);
}
);
}
}
this.http.get(this.url)
.pipe(
filter(...),
map(...)
)