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

时间:2016-08-24 10:51:26

标签: angular typescript

我尝试按照angular.io上的教程(Tour the Heroes) 但是,我尝试在某些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);
  }

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

import { Injectable }     from '@angular/core';
import { Headers, Http, Response } from '@angular/http';
import { User } from './user';

其中user.ts是TOH中heroe.ts的基本副本,所以:

export class User {
  id: number;
  name: string;
}

我如何在服务中调用此特定方法: 首先,我尝试多种方法,但在调试时我只是尝试使用console.log:

 console.log(this.userService.getUsersHttp());

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

  

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

第二个是:

  

EXCEPTION: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'}];
  }

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

1 个答案:

答案 0 :(得分:83)

看起来你缺少导入:

import 'rxjs/add/operator/toPromise';