Angular-在函数中使用服务,在管道中使用此函数

时间:2018-12-13 08:35:08

标签: angular service scope pipe angular6

如上所述,我想在401错误之后使用在根函数中注入的服务注销用户。在我的一个http请求中发生错误后,在管道中调用了该函数。不幸的是,我收到如下错误:
错误TypeError:无法读取未定义的属性“注销”
401错误后。似乎在不同的范围内调用了该函数。我试图通过jector.get注入服务,以将我的服务和错误函数设置为public,但没有任何效果。
还有其他机会可以解决此问题吗?

constructor(private httpClient: HttpClient, private authenticationService: AuthenticationService) {}

private handleError(error: HttpErrorResponse) {
  if (error.status === 401) {
    this.authenticationService.logout();
  }
  return throwError('Something bad happened; please try again later.');
}

getSomething(): Observable<HttpResponse<Model>> {
  return this.httpClient.get<Model>(this.apiEndpoint, {
    observe: 'response'
  }).pipe(
  catchError(this.handleError)
  );
}

2 个答案:

答案 0 :(得分:0)

如果没有有效的示例,很难进行故障排除,但是我认为由于您是直接传递函数,因此不会在您的类/组件的this上下文中执行该函数,因此该服务是可能未定义。 “胖箭头功能”最有可能解决此问题。

像这样更改代码:

getSomething(): Observable<HttpResponse<Model>> {
  return this.httpClient.get<Model>(this.apiEndpoint, {
    observe: 'response'
  }).pipe(
  catchError(err => this.handleError)
  );
}

请查看this post,以了解更多信息。

答案 1 :(得分:0)

这是一个In [4]: sys.stdin = "read" In [5]: sys.stdout = sys.stdin AttributeError: 'str' object has no attribute 'write' If you suspect this is an IPython bug, please report it at: https://github.com/ipython/ipython/issues or send an email to the mailing list at ipython-dev@python.org 上下文问题。您可以使用胖箭头功能或将handleError函数与服务上下文绑定。

this