我尝试按照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'}];
}
我试着描述可能很重要的一切,如果问题有点长,那就很抱歉 . Please guys can you give me hint what i am doing wrong?
1 回答
看起来你缺少导入:
import 'rxjs/add/operator/toPromise';