【发布时间】:2018-10-30 10:51:33
【问题描述】:
我想从另一个 JSON 对象数组中检索对象数组,我通过 Angular 5 中的 HTTP 请求获取该对象数组,并希望在控制台中显示值。在这里我可以成功调用 HTTP 请求并能够订阅服务.
在模板中通过 *ngFor 解析时,它工作正常,但是当我直接在 typescript 文件中访问时,它在控制台中显示未定义的值。
我的 JSON 是这样的。
{"data":[
{
userId: 1,
id: 1,
title: 'Loreum ispum',
body: 'dummy text'
},
{
userId: 1,
id: 1,
title: 'Loreum ispum',
body: 'dummy text'
},
{
userId: 1,
id: 1,
title: 'Loreum ispum',
body: 'dummy text'
}]
}
我可以通过 ngFor 在 html 文件中访问它,它给出了值,但是当我在 typescript 中访问时,例如 console.log(this.obj[data]);它显示未定义。
我需要创建一个新数组,它只有 id 和 title 字段在 angular 5 请帮忙。我的服务页面
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpResponse } from'@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
@Injectable()
export class ConfigService {
private URL: string = 'some URL';
constructor(private http:HttpClient) {}
getData(): Observable<any> {
return this.http.get(this.URL+ '/getdata', {responseType: 'json'});
}
}
我的组件
import { Component, OnInit, Input } from '@angular/core';
import { ConfigService } from '../services/config.service';
import { FormControl } from '@angular/forms';
import { SelectionModel } from '@angular/cdk/collections';
import { FlatTreeControl } from '@angular/cdk/tree';
import { Observable, BehaviorSubject } from 'rxjs';
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.css']
})
export class childComponent implements OnInit {
allData: any = [];
getALLData() {
this.config.getData().subscribe(
data => { this.allData= data['data']},
err => console.error(err),
() => console.log('done loading data')
);
}
ngOnInit() {
this.getALLData();
console.log(this.allData); //here its showing undefined in console
}
}
请帮助解决这个问题
【问题讨论】:
-
试试
console.log(this.obj.data) -
你能显示你的组件/服务代码吗?
-
Json 里面不能有'='。你的意思是':'
-
这是我的服务
-
export class ConfigService { constructor(private http:HttpClient) {} getFoods(): Observable
{ return this.http.get('jsonplaceholder.typicode.com/posts', {responseType: 'json'} ); } }
标签: json angular typescript multidimensional-array