如上所述,我想在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)
);
}
答案 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