我正在尝试从我的服务中返回一条错误消息,该消息对我的显示数据的组件进行API调用。
我的服务获得如下数据:
getResults(searchurl: string): Observable<IPageSpeedResult> {
return this._http.get(pageSpeedApiUrl)
.map((response: Response) => this.buildResult(response.json()))
.do(data => console.log(data))
.catch((err:Response) => this.handleError(err));
}
我发现这个答案谈到了如何做到这一点:
Delegation: EventEmitter or Observable in Angular2
所以我将这些属性添加到我的服务中:
private _errorReplaySource : ReplaySubject<string> = new ReplaySubject<string>()
public errorReplay : Observable<string> = this._errorReplaySource.asObservable();
然后在我的错误处理方法中,我在_errorReplaySource
上调用了next()private handleError(error: Response) {
this._errorReplaySource.next("There was an error retreiving data for that URL. Please check it is correct and try again.")
return Observable.throw(error.json().error || 'Server error');
}
然后在我的组件中,我给它添加了一个属性:
ngOnInit(): void {
this._errorSub = this._pageSpeedService.errorReplay.subscribe(error => this.errorMessage = error);
Observable.combineLatest(
this._pageSpeedService.getMessageData(),
this._pageSpeedService.getResults(this.testUrl)
).subscribe(
results => {
this.messageData = <TestResultMessageLogic[]>results[0];
this.testResults = results[1];
this.processApiResponse(this.testResults, this.messageData);
}
)
}
在我的模板中,我正在使用{{errorMessage}}
,但是当发生错误时,消息未被传递。我想知道我是否是正确的技术以及我做错了什么。
有人可以提供一些建议或传递错误信息的简单示例吗?