我搜索了前面的线索询问此错误消息。从我能找到的这个错误消息有两个记录的原因。属性'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响应将以不同的方式处理 –