Angular2 - TypeError:this.http.get(...).toPromise不是函数

And*_*rit 26 typescript angular

我尝试按照angular.io上的教程(游览英雄)但是我尝试在一些JSON上做出真正的GET请求而不是教程.

我的代码看起来像:

  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);
  }
Run Code Online (Sandbox Code Playgroud)

为了服务我只导入一些基本的东西:

import { Injectable }     from '@angular/core';
import { Headers, Http, Response } from '@angular/http';
import { User } from './user';
Run Code Online (Sandbox Code Playgroud)

TOH的user.ts基本副本heroe.ts在哪里:

export class User {
  id: number;
  name: string;
}
Run Code Online (Sandbox Code Playgroud)

我如何在服务中调用这个特定的方法:首先我尝试多个东西,但在调试时我尝试只调试console.log:

 console.log(this.userService.getUsersHttp());
Run Code Online (Sandbox Code Playgroud)

当在控制台中加载页面时,我发现了多个错误:第一个是:

EXCEPTION:TypeError:this.http.get(...).toPromise不是函数

第二个是:

EXCEPTION:TypeError:this.http.get(...).toPromise不是functionBrowserDomAdapter.logError @

服务它自己看起来很好.我app.module.ts在这一行添加了我的服务:

providers: [ HTTP_PROVIDERS, UserService ]
Run Code Online (Sandbox Code Playgroud)

如果我用一些函数直接返回数据(并注释掉调用getUsertHttp函数),它就可以工作:

  getUsers() {
    return [{'id': 1, 'name': 'User1'}, {'id': 2, 'name': 'User2'}];
  }
Run Code Online (Sandbox Code Playgroud)

我试着描述可能很重要的一切,如果问题有点长,那就很抱歉. 拜托,伙计们,你能不能给我一些暗示我做错了什么?

Ste*_*ota 83

看起来你缺少导入:

import 'rxjs/add/operator/toPromise';

  • https://jsonplaceholder.typicode.com/users返回一个json数组,而不是一个有.data成员的对象 (3认同)