相关疑难解决方法(0)

类型'Observable <any>'中不存在属性'catch'

在Angular 2文档页面上有一个使用Http服务的例子.

getHeroes (): Observable<Stuff[]> {
  return this.http.get(this.url)
                  .map(this.extractData)
                  .catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)

我克隆了angular2-webpack-starter项目并自己添加了上面的代码.

我导入Observable使用

import {Observable} from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)

我假设属性Observable也被导入(.map有效).查看rxjs.beta-6的更改日志,没有提到任何内容catch.

javascript rxjs typescript angular

120
推荐指数
3
解决办法
8万
查看次数

HttpInterceptor处理401错误不返回Observable

我遵循这个例子:https://www.intertech.com/Blog/angular-4-tutorial-handling-refresh-token-with-new-httpinterceptor/

一切都很好,除了方法handle401Error.除非我添加subscribe了拦截器,否则它不会执行.我必须错过一些东西,即使试图遵循这个例子.

这是相关的代码:

零件:

ngOnInit() {
  this.service.getData()
    .subscribe((response: any) => {
      this.message = `Worked with status = ${response.status}`;
    },
    error => this.message = `Failed with status = ${error.status}`);
}
Run Code Online (Sandbox Code Playgroud)

服务:

constructor(private http: HttpClient) {
  this.currentToken = this.authTokenStale;
}

public authTokenStale: string = 'stale_auth_token';
public authTokenNew: string = 'new_auth_token';
public currentToken: string;

getData() {
  return this.http.get<{status}>('https://private-4002d-testerrorresponses.apiary-mock.com/getDataError401');
}

getAuthToken() {
  return this.currentToken;
}

refreshToken(): Observable<string> {
  this.currentToken = this.authTokenNew;
  return Observable.of(this.authTokenNew).delay(200);
}
Run Code Online (Sandbox Code Playgroud)

拦截器:

isRefreshingToken: boolean …
Run Code Online (Sandbox Code Playgroud)

angular-http-interceptors angular angular-httpclient

2
推荐指数
1
解决办法
8705
查看次数