Подтвердить что ты не робот

Angular2 - TypeError: this.http.get(...). toPromise не является функцией

Я пытаюсь следовать руководству по 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'}];
  }

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

4b9b3361

Ответ 1

Похоже, что вам не хватает импорта:

import 'rxjs/add/operator/toPromise';