Подписка на сервис возвращает неопределенные значения - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь подписаться на службу, которая пытается получить доступ к серверной части REST, используя следующий объект.

export class Country {

    iso: String;
    iso3: String;
    name: String;
    niceName: String;
    numCode: number;
    phoneCode: number;

    constructor(values: Country = {}) {
        Object.assign(this, values);
    }
}

Это метод службы, который извлекает данные из API, иданные успешно извлекаются в функцию map().

public getCountries(): Observable<Country[]> {
    return this.http.get(COUNTRY_URL).pipe(
            map(response => {
                const countries = response.json()._embedded.countries;
                return countries.map((country) => { new Country(country) });
            }),
            catchError(this.handleError)
        );
}

И это потребитель, подписывающийся на услугу.

countries: Country[] = [];

constructor(private countryService: CountryService) {
    countryService.getCountries()
        .subscribe(countries => { 
            this.countries = countries;
    });
}

Переменная country оказывается массивомundefined объекты.

Дополнительная информация

Я использую Угловой 6 с RXJS6 и следовал заруководство по миграции здесь

Это пример ответа API.

{
    "_embedded" : {
        "countries" : [ ... ]
    },
    "_links" : {
        "first" : {
            "href" : "http://localhost:8080/api/countries?page=0&size=20"
        },
        "self" : {
            "href" : "http://localhost:8080/api/countries{?page,size,sort}",
            "templated" : true
        },
        "next" : {
            "href" : "http://localhost:8080/api/countries?page=1&size=20"
        },
        "last" : {
            "href" : "http://localhost:8080/api/countries?page=11&size=20"
        },
        "profile" : {
            "href" : "http://localhost:8080/api/profile/countries"
        },
        "search" : {
            "href" : "http://localhost:8080/api/countries/search"
        }
    },
    "page" : {
        "size" : 20,
        "totalElements" : 239,
        "totalPages" : 12,
        "number" : 0
    }
}

Может кто-нибудь увидеть какие-либо проблемы с моим кодом?Любая помощь будет оценена.

1 Ответ

0 голосов
/ 26 августа 2018

Похоже, вы пропустили return до new Country(country) (или, альтернативно, удалите окружающие фигурные скобки).

...