ОШИБКА Не удается найти другой поддерживающий объект '[object Object]' типа 'object' - PullRequest
0 голосов
/ 26 марта 2020

Я новичок ie в Angular 8, и я пытаюсь реализовать службу для загрузки данных в формате JSON в API, но на консоли появилась следующая ошибка

Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.

Я также читал похожие вопросы об этой ошибке, но я не смог ее решить

Вот мой .ts код, где я делаю сервисный вызов

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

  private CarURL = 'https://catalogo-autos.herokuapp.com/api/autos';

  constructor(private http: HttpClient) { }

 getCars(): Observable<Car[]>{

   return this.http.get<Car[]>(this.CarURL);

 }
}

А вот и сервис:

  ngOnInit() {

    this.getCars();
  }

  getCars(): void {

    this.carService.getCars().subscribe((carsTemp)=>{
      this.cars = carsTemp;
    })
  }

Наконец-то вот моя HTML разметка

<ng-container *ngFor="let car of cars">
    <div class="cars">
        <div class="fas fa-eye" (click)="onSelect(car,infAuto)"></div>
        <div>{{car.description}} </div>
    </div>
</ng-container>

Буду признателен за любую дополнительную помощь

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

При загрузке API создается впечатление, что требуемый массив автомобилей фактически находится в data свойстве.

API data

Вы можете отобразить результат в свойство data перед возвратом наблюдаемого в контроллер. Попробуйте следующее

Сервис

@Injectable({
  providedIn : 'root'
})
export class CarsService {
  private CarURL = 'https://catalogo-autos.herokuapp.com/api/autos';

  constructor(private http: HttpClient) { }

  getCars(): Observable<Car[]>{
    return this.http.get<Car[]>(this.CarURL).pipe(map(response => response.data));
  }
}
2 голосов
/ 26 марта 2020

Вы должны получить доступ к data свойству полученного ответа. Получаемый вами объект не является массивом. Это объект с некоторыми дополнительными данными, одно из которых data является фактически вашим обязательным свойством. Вы должны помнить, что после компиляции вашего машинописного кода вы получаете js, а ответ обрабатывается с помощью JSON.parse (помните, что некоторые поля имеют тип Date)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...