这个讨论很多,但我找不到如何解决我的问题。
原因很明显,我试图在我的拦截器中使用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);
}