【问题标题】:error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays how to solve错误:找不到“object”类型的不同支持对象“[object Object]”。 NgFor 只支持绑定到 Arrays 等 Iterables 如何解决
【发布时间】:2019-01-12 10:51:18
【问题描述】:

返回json数据的服务代码

  export class EmployeeServiceService {
      constructor(private _http:Http) { }
      GetEmployees() :Observable<IEmployee[]>{
        debugger;
        return this._http.get("http://localhost:2724/api/employee/1")
        .map((response:Response)=> <IEmployee[]>response.json())
      }
    }

在这个组件类中我无法转换 json 数据请任何人帮我解决我的问题

export class EmployeeListComponent implements OnInit {

  Employees:IEmployee[];

      constructor( private _EmployeeService: EmployeeServiceService) { 

      }

      ngOnInit() {
       this._EmployeeService
        .GetEmployees().subscribe((employeeData)=> this.Employees = employeeData);
      }

    }

html

<tbody>
  <tr *ngFor="let employee of Employees">
    <td>{{employee.Address}}</td>
    <td>{{employee.City}}</td>
    <td>{{employee.EmployeeID}}</td>
    <td>{{employee.FirstName}}</td>
    <td>{{employee.LastName}}</td>
  </tr>
  <tr *ngIf="!Employees|| Employees.length== 0">
    <td>No employee to display!!!</td>
  </tr>
</tbody>

在此处输入代码

【问题讨论】:

  • 你能把console.log里面的东西贴出来吗(JSON.stringify(this.Employees));
  • {"EmployeeID":1,"LastName":"Stein","FirstName":"Nidprxmvtyjnat","MiddleInitial":"D","SSN":"122-08-9952" ,"地址":"Ap #461-7976 Enim. Street ","City":"Rutland","State":"VT","Zip":"90400","Phone":"1-796-415 -8913","Status":5,"Description":"这是员工案例研究的样本数据。"}
  • 看到上面只是一个对象。检查我的答案

标签: arrays angular ngfor


【解决方案1】:

当您尝试将对象与 ngFor 绑定时,就会发生此错误。 ngFor 指令仅支持数组。

根据请求,它似乎只返回一个对象,

 return this._http.get("http://localhost:2724/api/employee/1")

如果您只需要绑定一个Object,则无需使用ngFor

您还需要使用空数组初始化员工。

Employees:IEmployee[] = [];

如果你还想绑定一个Object到table上,可以如下push这个Object到数组中,

this.Employees.push(employeeData);

两种选择

(i) 更改您返回所有员工的请求

 return this._http.get("http://localhost:2724/api/employee/all")

(ii) 如下将 Object 推送到数组中,

ngOnInit() {
       this._EmployeeService
        .GetEmployees().subscribe((employeeData)=> this.Employees.push(employeeData);
      }

【讨论】:

  • 什么意思?
  • 这段代码在哪里使用 this.Employees.push(employeeData);
  • 内部订阅
  • this._EmployeeService .GetEmployees().subscribe((employeeData)=> this.Employees.push(employeeData));它抛出编译时错误
  • 要么更改您的要求返回所有员工返回此。_http.get("localhost:2724/api/employee/all")
猜你喜欢
  • 2018-12-31
  • 2020-05-23
  • 1970-01-01
  • 2017-02-10
  • 2018-10-29
  • 2019-04-04
  • 2020-10-17
相关资源
最近更新 更多