在typescript模型中访问数组对象值

时间:2017-11-15 10:52:24

标签: angular typescript

我是打字稿和角色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的值并将其存储为数组?任何帮助深表感谢。

2 个答案:

答案 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代码进行转换。.