Я не уверен, что понимаю весь контекст, также неясно, можете ли вы прочитать файл cookie или нет, если вы можете прочитать файл cookie, в HomeComponent у вас может быть способ проверить, есть ли токен в файле cookie. истек срок действия до того, как вы позвоните в службу, которой нужен токен (поэтому вы не получите 401)
import { CookieService } from 'ngx-cookie';
@Component({
selector: 'home-component',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class HomeComponent {
tokenValid = true;
constructor(public cookie: CookieService) {}
ngOnInit(){
this.tokenValid = this.isAccessTokenValid();
if(this.tokenValid) {
//call a service that uses the token
}else {
//do whatever
}
}
isAccessTokenValid(): boolean {
const acc_token = this.cookieService.get('token_in_cookie'); // use your key
if (!!acc_token) {
if (jwtService.isTokenExpired(acc_token)) {
return false;
}
return true;
} else {
return false;
}
}
}
Если вам нужно просто обработать 401 с сервера, то вам, возможно, потребуется реализовать и перехватчик, как предложено в предыдущих комментариях выше, что-то вроде ...
@Injectable({
providedIn: 'root'
})
export class HttpRequestInteceptorError implements HttpInterceptor {
constructor() { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).pipe(catchError(err => {
if (err instanceof HttpErrorResponse) {
// Token expired
if (err.status === 401) {
// refresh access_token or whatever
}
}
return throwError(err);
}));
}
}
Надеюсь, это поможет!