当前位置: 首页 > 面试题库 >

角度:“找不到类型为“对象”的其他支持对象“ [对象对象]”。NgFor仅支持绑定到Iterables,例如数组

邹禄
2023-03-14
问题内容

我创建了一个有角度的应用程序,该应用程序从json文件获取数据。但是我在以html显示数据时遇到了问题。荷兰有很多变量,对此我感到抱歉。我对这一切也有点陌生:)

这是我的服务:

import {Injectable} from '@angular/core';
import {Http, RequestOptions, Response, Headers} from '@angular/http';
import {Observable} from "rxjs";
import {Afdelingen} from "./models";

@Injectable()
export class AfdelingService {
  private afdelingenUrl = '/assets/backend/afdelingen.json';
    constructor(private http: Http) {
      }

      getAfdelingen(): Observable<Afdelingen[]> {
        return this.http.get(this.afdelingenUrl)
          .map(this.extractData)
          .catch(this.handleError);
      }

      private extractData(res: Response) {
        let body = <Afdelingen[]>res.json();
        return body || {};
      }

      private handleError(error: any): Promise<any> {
        console.error('An error occurred', error);
        return Promise.reject(error.message || error);
      }

      addAfdeling(afdelingsNaam: string, afdeling: any): Observable<Afdelingen> {
        let body = JSON.stringify({"afdelingsNaam": afdelingsNaam, afdeling: afdeling});
        let headers = new Headers({'Content-Type': 'application/json'});
        let options = new RequestOptions({headers: headers});
        return this.http.post(this.afdelingenUrl, body, options)
          .map(res => <Afdelingen> res.json())
          .catch(this.handleError)
      }
    }

这是我的json文件的一部分:

{
  "afdelingen": [
    {
      "afdelingsNaam": "pediatrie",
      "kamernummer": 3.054,
      "patientid": 10001,
      "patientennaam": "Joske Vermeulen",
      "reden": "Appendicitis",
      "opname": "12/05/2017",
      "ontslag": "28/06/2017",
      "behandelingstype": "nazorg",
      "behandelingsomschrijving": "wondverzorging",
      "behandelingsdatum": "10/06/2017",
      "behandelingstijd": "10:20",
      "vegitarisch": false,
      "Opmerkingen": "",
      "sanitair": true,
      "kinderverzorgingsruimte": false,
      "salon": true,
      "hulp": true,
      "width": 5,
      "height": 5
    },
    {
      "afdelingsNaam": "pediatrie",
      "kamernummer": 3.055,
      "patientid": 10002,
      "patientennaam": "Agnes Vermeiren",
      "reden": "Beenbreuk",
      "opname": "18/05/2017",
      "ontslag": "30/06/2017",
      "behandelingstype": "nazorg",
      "behandelingsomschrijving": "wondverzorging",
      "behandelingsdatum": "10/06/2017",
      "behandelingstijd": "10:20",
      "vegitarisch": true,
      "Opmerkingen": "",
      "sanitair": true,
      "kinderverzorgingsruimte": false,
      "salon": true,
      "hulp": false,
      "width": 5,
      "height": 5
    }]}

组件:

import {Component, OnInit, Input} from '@angular/core';
import {Afdelingen} from "../models";
import {AfdelingService} from "../afdeling.service";
import {PatientService} from "../patient.service";


@Component({
  selector: 'app-afdeling',
  templateUrl: './afdeling.component.html',
  styleUrls: ['./afdeling.component.css']
})
export class AfdelingComponent implements OnInit {

 afdeling: Afdelingen[];
 errorMessage:string;

  constructor(private afdelingService: AfdelingService, private patientService: PatientService) { }

  ngOnInit() {
    this.getData()
  }

  getData() {
    this.afdelingService.getAfdelingen()
      .subscribe(
        data => {
          this.afdeling = data;
          console.log(this.afdeling);
        }, error => this.errorMessage = <any> error);

  }
}

和html:

<ul>
  <li *ngFor="let afd of afdeling">
    {{afd.patientid}}
  </li>
</ul>

问题答案:

如错误消息所述,ngFor仅支持诸如的Iterables Array,因此您不能将其用于Object

更改

private extractData(res: Response) {
  let body = <Afdelingen[]>res.json();
  return body || {};       // here you are return an object
}

private extractData(res: Response) {
  let body = <Afdelingen[]>res.json().afdelingen;    // return array from json file
  return body || [];     // also return empty array if there is no data
}


 类似资料:
  • 数据以这种方式发送: 我试图在html中用*ngFor显示类别,如下所示: 我的错误: 我去另一个视图不错,但是IDK为什么我的错误,如果我尝试:JSON.parse错误更改为 我一直在阅读有关该错误的信息,看起来我不需要解析,所以我非常困惑。 帮帮忙,谢谢! 这是转到另一个视图之前的数据。

  • 主要内容:不带serializeNulls的示例调用,使用serializeNulls调用的示例Gson默认生成优化的Json内容,忽略值。 但是提供的标志使用方法在Json输出中显示值。 参考以下代码实现 - 不带serializeNulls的示例调用 创建一个名为的Java类文件:GsonTester.java - 执行上面示例代码,得到以下结果 - 使用serializeNulls调用的示例 创建一个名为的Java类文件:GsonTester.java - 执行上面示例代码,得到以下结

  • 问题内容: 当我运行该函数时,它会引发以下错误,这是为什么呢? 问题答案: 显然,您正在传递给函数。可能是用python2.x编写的(返回列表时)。使用python3.x时,返回一个行为更像a而不是a的对象。因此,无法对其进行索引。 解决方案是将(或简单地)传递给。

  • 问题内容: 我有这个查询: 我收到以下错误: some_id是一个整数,但我想选择具有some_id = 1的指标(或任何我决定放入变量的#)。 问题答案: 这会将参数转换为可索引的列表。假设您的方法像我想的那样工作,这应该工作。 发生错误是因为该方法中的某个地方,它可能试图遍历该输入或直接对其进行索引。可能是这样的: 通过使其成为列表(或可迭代的),您就可以像这样将其索引到第一个元素中。 您还可

  • 默认情况下,Gson生成优化的Json内容,忽略NULL值。 但是GsonBuilder使用GsonBuilder.serializeNulls()方法提供了在Json输出中显示NULL值的标志。 GsonBuilder builder = new GsonBuilder(); builder.serializeNulls(); Gson gson = builder.create();