【问题标题】:Attempting to use object Object as an array in Angular 6尝试在 Angular 6 中使用对象 Object 作为数组
【发布时间】:2019-01-14 13:57:45
【问题描述】:

这是我的问题的一些背景

我正在使用 Angular 6 编写一个应用程序,该应用程序应该从我的 localhost:5000 端口读取数据以获取 JSON 数据并将其显示在 Angular 应用程序中。角度应用程序完美地从我的本地主机获取数据,除非收集数据时,整个数据是一个“对象 Object”,我不知道如何迭代这种类型或可视化收集的数据。我知道数据被正确收集的原因是发布数据的服务器收到了 200 条成功消息。

这是我的 Angular 应用正在接收的数据:

{"index":1,"Company":"Google","Hire Date":"1\/4\/16","Title":"Director"
,"Location":"Bay Area, CA","Degree":"Bachelors","Year entered 
work force":1994.0,"Offer; Base":"$225,000.00 
","Bonus":null,"Latitude":37,"Longitude":-122}

这是我在 Angular 中拟合数据的数据模型:

  export interface Exam {
    ID: number;
    Company: string;
    HireDate: string;
    Title: string;
    Location: string;
    Degree: string;
    yearEnteredWorkForce: string; 
    OfferCostNumber: string;
    bonus: string;
    latitude: number;
    longitude: number;
  }

这里是作为“object Object”返回的变量

this.examsList = this.examsApi.getExams()

【问题讨论】:

  • Enesxg,您想编码为 this.examsApi.getExams().subscribe(res=>this.examList=res)。 GetExams 是 Observable,您必须订阅并获得响应
  • 谢谢 Eliseo,出现错误:“类型 'Subscription' 不可分配给类型 'Exam[]'。类型 'Subscription' 中缺少属性 'includes'。”

标签: angular object-object-mapping


【解决方案1】:

import { Observable, Subscription } from 'rxjs/Rx'; /* 这应该添加到文件的顶部 */

this.examsApi.getExams().subscribe(res => {this.examsList = res)
       /* Write code to do operation on your response object.*/
});

你必须使用 subscribe 方法,你会得到响应对象,而不仅仅是 [object, Object]

【讨论】:

  • 出现错误:“类型‘订阅’不可分配给类型‘考试[]’。‘订阅’类型中缺少属性‘包含’。”
  • 为了能够使用订阅,您从 getExams() 方法得到的响应应该是 Observable 类型。你使用 Http.get 方法来调用你的 API 吗?请参阅在 Angular 6 中使用 http.get 方法的工作示例 angular.io/tutorial/toh-pt6 此外,您需要添加语句: import { Observable, Subscription } from 'rxjs/Rx';
【解决方案2】:

很难说,因为我们不知道您的服务返回什么。 如果您在 HTML 中将对象记录为 {{examsList}},它将始终显示为 [object object]。
另一个问题可能是您的数据只是一个对象,而您在其他 cmets 中编写的错误消息表明您尝试将 Array 分配给对象。 如果您使用 http 客户端获取数据,以下应该可以工作:

// In your service
getExams(filename: string) {
   return this.http.get('url to json').pipe(map(response => response.data))
}

而在你的控制器中正是 Trupti 写的

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 2018-11-25
    • 2020-08-15
    • 1970-01-01
    • 2021-12-21
    • 2020-05-27
    • 2018-07-15
    • 1970-01-01
    相关资源
    最近更新 更多