循环依赖。 HttpInterceptor和TranslateService

时间:2018-01-22 07:32:04

标签: angular angular5 angular-translate angular-http-interceptors cyclic-dependency

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

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

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

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

如果我删除了翻译,它就不会因为循环依赖而失败。

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

我该怎么做?

我尝试了链接建议,最后我明白了。

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);

}

0 个答案:

没有答案
相关问题