Ошибка при получении Невозможно найти другой поддерживающий объект '[object Object]' типа 'object'. NgFor поддерживает только привязку к итерациям, таким как массивы - PullRequest
0 голосов
/ 04 ноября 2019

Я смотрел на подобные вопросы, но ни один из них не помог мне. Я собираюсь получить объект, подобный следующему:

{
    "batch": "1"
    "batchsize": "212"
    "bmrnumber": "23232"
    "fieldname": "Batch"
    "id": 5122315436163072
    "pelletsize": "1"
    "project": "test"
}

Мой http-сервис для его получения:

this.http.get('/api/getbatch/' + this.authService.namespace + '/' + ID, options)
  .map(res => res.json());

и, наконец, в i, я назвал сервис следующим образом:

    getbatches: any = [];
constructor(private batchServce:BatchService){}
ngOnInit(){
        this.  this.testbatch();

    }
testbatch() {
  this.batchServce.getbatch(this.batchID).subscribe(res => {
    this.getbatches = res.json();
    console.log('-====>' + JSON.stringify(this.getbatches));
  });
 }

Компонент HTML для получения шоу в виде таблицы:

<table id="Batch">
 <tr *ngFor="let batchvalues of getbatches ;let i = index;"> 
 <td><tr>
   <th>Product Name</th>
   <td> {{batchvalues.product}}</td>
   </tr>                           
</table>

К сожалению, когда страница загружается, она жалуется:

Не удается найти другую поддержкуобъект '[объект Object]' типа 'объект'. NgFor поддерживает только привязку к итерациям, таким как массивы.

Итак, что же не так с этим кодом?

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

В качестве ответа вы получаете объект, а не массив объектов (согласно сведениям из console.log) :

Существует два способа:

Если выполучают один объект каждый раз, тогда нет необходимости использовать * ngFor:

testbatch() {
  this.batchServce.getbatch(this.batchID).subscribe(res => {
    this.getbatches = res;
    console.log('-====>' + JSON.stringify(this.getbatches));
  });
 }

HTML:

<your table html>
   <td>{{getbatches.project}}</td>
   <td>{{getbatches.batch}}</td>
   etc.
</your table markup>

Другой, если это должен быть массив, спросите человека, который дал вамAPI для изменения его типа с объекта на массив объектов, а затем вы можете использовать:

testbatch() {
  this.batchServce.getbatch(this.batchID).subscribe(res => {
    this.getbatches = res;
    console.log('-====>' + JSON.stringify(this.getbatches));
  });
 }

HTML:

<table id="Batch">
 <tr *ngFor="let batchvalues of getbatches;let i = index;"> 
   <th>Product Name</th>
   <td> {{batchvalues.product}} </td>
  </tr>                           
</table>
0 голосов
/ 04 ноября 2019

Здесь не нужен метод .json ()

 testbatch() {
  this.batchServce.getbatch(this.batchID).subscribe(res => {
    this.getbatches = res;
    console.log('-====>' + JSON.stringify(this.getbatches));
  });
 }
...