3

这被讨论了很多,但我找不到如何解决我的问题。

原因很清楚,我试图在我的拦截器中使用 translateService,但两者都依赖于 httpClient。

我只发生在我的拦截器构造函数是:

  constructor(    
    private router: Router,
    private translate: TranslateService){}

如果我删除 translate 它不会因为循环依赖而失败。

所以,我想我需要以某种不同的方式访问翻译,但我找不到它。

我该怎么做?

我尝试了链接建议,终于明白了。

constructor(    
private router: Router,
private injector: Injector){
  const translate =  injector.get(TranslateService);
}


intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
     //intercept method and:
   .catch(err => this.handleError(err));

}


private handleError(error): Observable<any> {

if (error.status === 401) {
  this.router.navigate(['/login']);
} else if (error.status === 403) {
  this.router.navigate(['/unauthorized']);
} else {
   this.injector.get(TranslateService).get(['GENERIC_ERROR', 'OK'])
}
return Observable.throw(error);

}

4

0 回答 0