我是打字稿和角色2的新手。我发现很难从http响应中访问数组对象值。下面是代码。
以下是rdcModel定义
class RdcModel {
constructor(
public rdcList: Array<RdcList>
) { }
}
class RdcList {
constructor(
public rdcNumber: number,
public rdcName: string,
) {}
}
export { RdcModel, RdcList };
使用以下Api服务来检索数据并返回rdcModel。
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
import { Observable } from 'rxjs/Rx';
import { RdcModel } from './model/rdc.model';
@Injectable()
export class ApiService {
constructor(
private http: HttpClient) {}
getRdc$(): Observable<RdcModel[]> {
return this.http
.get('https://web.server.com/RDCUI/rs/rdc')
.catch(this._handleError);
}
private _handleError(err: HttpErrorResponse | any) {
const errorMsg = err.message || 'Error: Unable to complete request.';
return Observable.throw(errorMsg);
}
}
以下是我打电话给api时得到的回复。
{
"rdcList":[
{
"rdcNumber":8756,
"rdcName":"DALLAS"
},
{
"rdcNumber":4251,
"rdcName":"TOPEKA"
}
]
}
在组件中,我试图访问rdclist [1]
rdcModel: RdcModel[] = [];
this.dcSub = this.api
.getRdc$().subscribe(
res => {
this.rdcModel = res;
console.log(this.rdcModel[0]);
},
err => {console.error(err); }
);
当我尝试访问[0]时,它给了我未定义。我应该如何访问每个RDC的值并将其存储为数组?任何帮助深表感谢。
答案 0 :(得分:1)
检查以下代码。我不确定您的响应是否是对象数组。如果它的对象数组只是迭代rdcModel并把控制台检查
rdcModel: any;
this.dcSub = this.api
.getRdc$().subscribe(
res => {
this.rdcModel = res;
console.log(this.rdcModel.rdcList[0]);
},
err => {console.error(err); }
);
答案 1 :(得分:0)
假设您已经创建了一个数据外观模型。 我的模型称为ModelClass
export interface ModelClass{
name: string;
age: number;
}
然后使用ModelClass对象类型创建数组
student: ModelClass[] = [];
以及如何在该数组中获取值->假定此代码在for循环或forEach循环中...或者您喜欢的任何循环方式
student[i].name;
student[i].age;
i --->是循环的索引...尝试用您的HTTP代码进行转换。.