Почему не отображается содержимое при использовании метода 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
199 +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 Апр 2024 в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир