У меня API выглядит следующим образом :
мой API
проблема в том, что когда я хочу использовать API для привязки данных, я получаю ошибку, которая говорит, что привязка данных возможна только для для массива. не объекты . что мне нужно от моего API - это только города . я понял, что, может быть, потому, что файл json является вложенным объектом и не может быть преобразован в массив поэтому я хочу посмотреть, есть ли способ просто извлечь города и поместить его в массив, чтобы использовать его для привязки. чтобы быть понятным здесь я публикую свои коды:
StatesProvider для получения API:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
@Injectable()
export class StatesProvider {
constructor(public http: HttpClient, public platform: Platform) {}
getCities() {
return new Promise(resolve => {
this.http.get("https://***"+lang+"/state/1").subscribe(data => {
resolve(data);
}, err => {
console.log(err);
});
});
}}
my компонент state.ts :
import { Component, ViewChild } from '@angular/core';
import { NavController, App, ViewController, Slides } from 'ionic-angular';
import { StatesProvider } from '../../providers/states/states';
@Component({
selector: 'page-state',
templateUrl: 'sell.html'
})
export class StatePage {
@ViewChild('mySlider') slider: Slides;
cities: any;
constructor(public viewCtrl: ViewController, public appCtrl: App,
public navCtrl: NavController, public stateProvide: StatesProvider) {
this.getCities();
}
getCities() {
this.stateProvide.getCities()
.then(data => {
this.cities = data;
console.log(this.cities);
});
}
наконец, файл html , часть, с которой у меня проблема, выглядит вот так:
<ion-content padding>
<ion-slides #mySlider (ionDidChange)="onSlideChanged($event)">
<ion-slide *ngFor="let city of cities.cities">
<ion-list>
<ion-item>
<ion-thumbnail item-left>
<img [src]="city.image_thumb">
</ion-thumbnail>
<h2 text-end>{{city.name}}</h2>
</ion-item>
</ion-list>
</ion-slide>
</ion-slides>
</ion-content>
теперь, когда я где-то читал, что для подобных API вы можете использовать * ngFor, как этот, который я написал: * ngFor = "let city of towns.cities" . но все равно я получаю сообщение об ошибке: Невозможно прочитать свойство «города» с неопределенным значением