Я пытаюсь следовать руководству по angular.io(Tour the Heroes) Но вместо учебника я пытаюсь сделать реальный запрос GET на каком-то JSON.
Мой код выглядит так:
private userUrl = 'https://jsonplaceholder.typicode.com/users';
constructor(private http: Http) {}
getUsersHttp(): Promise<User[]> {
return this.http.get(this.userUrl)
.toPromise()
.then(response => response.json().data as User[])
.catch(this.handleError);
}
Для обслуживания я импортирую только несколько основных вещей:
import { Injectable } from '@angular/core';
import { Headers, Http, Response } from '@angular/http';
import { User } from './user';
Где user.ts
является основной копией heroe.ts
в TOH, поэтому:
export class User {
id: number;
name: string;
}
Как я называю этот конкретный метод в сервисе: Сначала я пробую несколько вещей, но во время отладки я просто запускаю console.log так:
console.log(this.userService.getUsersHttp());
Когда страница загружается в консоли, я обнаружил несколько ошибок: Первый:
ИСКЛЮЧЕНИЕ: TypeError: this.http.get(...). toPromise не является функцией
Второй:
ИСКЛЮЧЕНИЕ: TypeError: this.http.get(...). toPromise не является functionBrowserDomAdapter.logError @
Обслуживание, которое он сам выглядит хорошо. Я добавил службу app.module.ts
в этой строке:
providers: [ HTTP_PROVIDERS, UserService ]
и он работает, если я напрямую возвращаю данные с помощью некоторой функции типа (и закомментирую вызов функции getUsertHttp
):
getUsers() {
return [{'id': 1, 'name': 'User1'}, {'id': 2, 'name': 'User2'}];
}
Я пытаюсь описать все, что может быть важно, так что извините, если вопрос длинный. Пожалуйста, ребята, можете ли вы дать мне подсказку, что я делаю неправильно?