tôi cố gắng làm theo hướng dẫn trên angular.io (Tour the Heroes) Nhưng thay vì hướng dẫn, tôi cố gắng thực hiện yêu cầu GET thực trên một số JSON .Angular2 - TypeError: this.http.get (...). ToPromise không phải là hàm
Mã của tôi trông giống như:
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);
}
Để phục vụ tôi nhập khẩu chỉ vài điều cơ bản:
import { Injectable } from '@angular/core';
import { Headers, Http, Response } from '@angular/http';
import { User } from './user';
đâu user.ts
là bản sao về cơ bản của heroe.ts
trong TOH vậy:
export class User {
id: number;
name: string;
}
Cách tôi gọi phương thức cụ thể này trong dịch vụ: Trước tiên Tôi thử nhiều thứ nhưng khi gỡ lỗi tôi cố gắng chỉ console.log nó vậy:
console.log(this.userService.getUsersHttp());
Khi trang web được tải trong giao diện điều khiển tôi tìm thấy nhiều lỗi: Đầu tiên là:
EXCEPTION: TypeError: this.http.get(...).toPromise is not a function
một thứ hai là:
EXCEPTION: TypeError: this.http.get(...).toPromise is not a functionBrowserDomAdapter.logError @
Tự động dịch vụ có vẻ ổn. Tôi thêm dịch vụ của tôi để app.module.ts
trong dòng này:
providers: [ HTTP_PROVIDERS, UserService ]
và nó hoạt động nếu tôi trực tiếp trả lại dữ liệu với một số chức năng tương tự (và nhận xét ra gọi getUsertHttp
chức năng):
getUsers() {
return [{'id': 1, 'name': 'User1'}, {'id': 2, 'name': 'User2'}];
}
tôi cố gắng để mô tả tất cả mọi thứ có thể rất quan trọng vì vậy xin lỗi nếu câu hỏi là loại dài một chút. Xin vui lòng các bạn có thể cho tôi gợi ý những gì tôi đang làm sai?
Bạn có thể cũng dán index.html và main.ts? Có thể thiếu lõi-js hoặc es6-shim trong polyfill. –