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