我有JSON数据的问题我在我的基地有3个表"字典"具有相同的结构和不同的列名:
{"id":1,"test_1":"test"},{"id":2,"test_1":"lalala"} - first JSON
{"id":1,"test_2":"****"},{"id":2,"test_2":"afery-t"} - secound JSON
我想在Angular 2中创建一个类
export class dictionary{
id:number;
dictValue:string;
}
将这个差异JSON对象转换为on是否可行,因为这不起作用:
res => <dictionary[]> res.json()
在Html模板中,我有Json对象而不是NgFor中的类值。
<tr *ngFor="let item of directoryArray">
{{item.test_1}} - i want to have {{item.dictValue}}
</tr>
控制器
directoryArray:dictionary[];
this._httpService.getAll().subscribe(
data => this.directoryArray = data,
error => alert(error),
() => console.log("Done"));
感谢您的帮助告诉我是否有可能或者我必须更改base中的值或为所有JSON创建不同的对象。
答案 0 :(得分:2)
如上所述,使用界面:
export interface dictionary { // I would use 'Dictonary' here
id:number;
dictValue:string;
}
不知道你的getAll
函数是怎样的,这是获得“第一个”JSON的一个例子:
getFirstJSON(): Observable<dictionary[]> {
return this.http.get('the Url')
.map(res => res.json().map((x:any) => Object.assign({id:x.id,dictValue:x.test_1})))
}
我们使用map
设置属性以匹配您的界面。
然后在你的组件中:
directoryArray: dictionary[];
this.service.getFirstJSON()
.subscribe(data => {
this.directoryArray = data;
})
现在我们有了与界面匹配的属性,可以在模板中使用:
<tr *ngFor="let item of directoryArray">
<td>{{item.dictValue}}</td>
</tr>