В DefaultIterableDiffer.diff допускаются только массивы и итерации. - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь получить данные из API для отображения на компоненте. html на Angular. Но я застрял в этой проблеме

Так что он должен показать totalDeaths от API, который является "238569".

Ошибка: Ошибка при попытке изменить '238569'. Разрешены только массивы и итерации

компонент. html

<li *ngFor="let deaths of tDeaths"
  [value]="deaths">
  {{ deaths }}
</li>

component.ts

import { Component, OnInit } from '@angular/core';
import { CoronaService } from '../corona.service';
import { Observable } from 'rxjs';

@Component({
  selector: 'app-covid',
  templateUrl: './covid.component.html',
  styleUrls: ['./covid.component.css']
})
export class CovidComponent implements OnInit {
  public tDeaths:any = [];
  constructor(private coronaService : CoronaService) {}

  ngOnInit(): void {
      this.coronaService.getJSON().subscribe(data => {
        console.log(data);

        this.tDeaths = data.Global.TotalDeaths;
      });
  }  
}

service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';



@Injectable({
  providedIn: 'root'
})
export class CoronaService {

  constructor(private http: HttpClient) {
    this.getJSON().subscribe(data => {
    });
}

public getJSON(): Observable<any> {
    return this.http.get("https://api.covid19api.com/summary");
}
}

Ответы [ 2 ]

1 голос
/ 03 мая 2020

Вам нужно отправить sh данные в ваши tDeaths в OnInit. Так как вы объявили это как массив.

  ngOnInit(): void {
      this.coronaService.getJSON().subscribe(data => {
        console.log(data);

        this.tDeaths.push(data.Global.TotalDeaths);
        return this.tDeaths
      });
  }  
1 голос
/ 03 мая 2020

Кажется, вы пытаетесь повторить число. Вам нужно либо предоставить массив для * ngFor (возможно, для сопоставления объекта с массивом с помощью Object.keys / Object.values), либо не использовать ngFor, если выходное значение не должно быть массивом в первую очередь.

...