Почему не отображается содержимое при использовании метода Promise в Angular 4? Всем привет.
У меня такая проблема: не отображается содержимое массива переданного с api. В консоли его видно а на экран не выводит. До этого я не использовал метод Promise и всё работало.
servicegetAllUsers(): Promise {
return this.http.get(this.apiUrl)
.toPromise()
.then(res => res.json().data as User[])
.catch(this.handleError);
}
componentngOnInit() {
this.usersService.getAllUsers().then(users => this.users = users);
}
component.html
{{ user._id }}
{{ user.first_name }}
{{ user.last_name }}
{{ user.email }}

userexport class User {
_id: any;
first_name: string;
last_name: string;
email: string;
}
Сам массив получаемый из базы[{"_id":1,"first_name":"Jena","last_name":"Savidge","email":"jsavidge0@google.it"},{"_id":2,"first_name":"Rheta","last_name":"Dye","email":"rdye1@technorati.com"}}
В консоли ошибок нет.
В чем может быть проблема? Спасибо.

21 Авг 2019 в 06:26
163 +1
0
Ответы
1

Проблема, скорее всего, заключается в том, что вы используете метод .json().data для извлечения данных из ответа, но данные приходят в виде массива объектов, а не в виде объекта с полем data. Попробуйте изменить ваш метод getAllUsers() следующим образом:

getAllUsers(): Promise<User[]> {
return this.http.get(this.apiUrl)
.toPromise()
.then(res => res.json() as User[])
.catch(this.handleError);
}

Изменение в строке .then(res => res.json().data as User[]) — теперь она выглядит так: .then(res => res.json() as User[]).

Попробуйте внести эту изменение и проверьте, отображается ли теперь содержимое массива пользователей на экране.

20 Апр в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир