我正在尝试重试我的请求,以便在发送用户再次登录之前我可以获得刷新令牌,但是当我尝试在请求中使用retryWhen
时我收到错误并且我正在尝试我不知道为什么。
http.service.ts
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Http, Headers, RequestOptions, Response } from '@angular/http';
@Injectable()
export class HttpService {
constructor(
private http: Http
) { }
public get(url: string, headers?: Headers): Observable<any> {
return this.http.get(url, this.getHeaders(headers))
.map(this.extractData)
.retryWhen((error: any) => { ... }) // [ts] Property 'retryWhen' does not exist on type 'Observable<any>'.
.catch(this.handleError);
}
}
答案 0 :(得分:10)
在使用之前,您必须先导入运算符(对其他运算符的运行方式相同)
将它放在文件顶部的导入中:
import 'rxjs/add/operator/retryWhen';
它将此运算符添加到Observable原型的顶部。
答案 1 :(得分:1)
使用它几天之后,Omri发布的原始解决方案引起了一些偶然发现财产的问题。 (它在某些版本中有效,而在其他版本中无效)。我最终找到了一个更加一致的更好的解决方案,并且不需要额外的导入。
而不是从rxjs / Observable导入Observable,而不是从rxjs / Rx导入它。
不会工作:
import { Observable } from 'rxjs/Observable';
DOES 工作:
import { Observable } from 'rxjs/Rx';