Почему не отображается содержимое при использовании метода 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"}} В консоли ошибок нет. В чем может быть проблема? Спасибо.
Проблема, скорее всего, заключается в том, что вы используете метод .json().data для извлечения данных из ответа, но данные приходят в виде массива объектов, а не в виде объекта с полем data. Попробуйте изменить ваш метод getAllUsers() следующим образом:
Проблема, скорее всего, заключается в том, что вы используете метод .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[]).
Попробуйте внести эту изменение и проверьте, отображается ли теперь содержимое массива пользователей на экране.