我搜索了前面的線索詢問此錯誤消息。從我能找到的這個錯誤消息有兩個記錄的原因。屬性'toPromise'類型上不存在'Observable <Response>
缺少
import 'rxjs/add/operator/toPromise'
或import 'import 'rxjs/add/operator/map'
錯誤與Visual Studio(這我不使用)。
這是問題
import { Injectable } from '@angular/core';
import { Headers, Http } from '@angular/http';
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/map';
import { Event } from './event';
@Injectable()
export class EventService {
private eventsUrl = 'api/events'; // URL to web api
private headers = new Headers({'Content-Type': 'application/json'});
constructor(private http: Http) { }
getEvents(): Promise<Event[]> {
return this.http.get(this.eventsUrl)
.toPromise()
.then(response => response.json().data as Event[])
.catch(this.handleError);
}
}
代碼上面的代碼給我的錯誤Property 'toPromise' does not exist on type 'Observable<Response>'
編輯:感謝@estus我發現我安裝的軟件包中的一個錯誤。該軟件包有自己的node_modules,它也有rxjs導致項目中出現重複的rxjs。
請問您爲什麼使用「toPromise」?除非在極少數情況下使用舊服務返回時才推薦。 (哪個Angular的Http不是其中之一。)注意:angular.io中的教程仍然存在,但它目前已過時。 – DeborahK
@DeborahK我明白了。我正在遵循toh教程,這就是它的原因。感謝您的信息。我將研究如何處理由Angular Http返回的Observable的正確方法。 – dendrobium
您正在使用哪個版本的Angular?根據版本,HTTP響應將以不同的方式處理 –