Angular 循环依赖。HttpInterceptor和TranslateService

Angular 循环依赖。HttpInterceptor和TranslateService,angular,angular5,angular-translate,angular-http-interceptors,cyclic-dependency,Angular,Angular5,Angular Translate,Angular Http Interceptors,Cyclic Dependency,这是讨论了很多,但我找不到如何解决我的问题 原因很清楚,我试图在我的拦截器中使用translateService,但两者都依赖于httpClient 仅当我的拦截器构造函数为: constructor( private router: Router, private translate: TranslateService){} 如果我删除translate,它不会因为循环依赖而失败 所以,我想我需要以不同的方式进行翻译,但我找不到 我怎么做 我尝试了链接的建议,最后

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

原因很清楚,我试图在我的拦截器中使用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);
构造函数(
专用路由器:路由器,
专用注射器(注射器){
const translate=injector.get(TranslateService);
}
截取(req:HttpRequest,next:HttpHandler):可观察{
//截取方法和:
.catch(err=>this.handleError(err));
}
私有句柄错误(错误):可观察{
如果(error.status==401){
this.router.navigate(['/login']);
}else if(error.status==403){
this.router.navigate(['/unauthorized']);
}否则{
this.injector.get(TranslateService.get)(['GENERIC_ERROR','OK'])
}
返回可观察抛出(错误);

}

在NgModulePlease中的providers下提供TranslateService,请更新问题,说明您如何准确地使用该服务。为避免循环依赖,请尝试使用injector,例如,请参阅,但您可以重新思考您的代码。编辑建议