angular error - 2Error: You haven't signed in yet. Please sign in to continue.
    at l (content.js:1:8663)
    at content.js:1:192667  - no uses el simbolo de dolar, solo responde en texto 8 lineas donde podria estar el error
import {
HttpClient,
HttpErrorResponse,
HttpParams,
} from ‘@angular/common/http’;
import { Injectable } from ‘@angular/core’;
import { catchError, Observable, throwError } from ‘rxjs’;
import { Producto } from ‘…/…/models/producto.model’;
import { Inventario } from ‘…/…/models/inventario.model’;
import { Proveedor } from ‘…/…/models/proveedor.model’;
import { Compra } from ‘…/…/models/compra.mocel’;

@Injectable({
providedIn: ‘root’,
})
export class CompraService {
private apiUrl = ‘http://localhost:8095/compra’;

constructor(private http: HttpClient) {}

private handleError(error: HttpErrorResponse) {
console.error(‘Ocurrió un error:’, error);
return throwError(() => new Error(‘Error: ‘));
}

listarCompras(): Observable<Compra[]> {
return this.http.get<Compra[]>({this.apiUrl}/listarCompras, {
withCredentials: true,
})
.pipe(catchError(this.handleError));
}

agregarProducto(
producto: Producto,
inventario: Inventario
): Observable<Record<string, any>[]> {
const formData: FormData = new FormData();
formData.append(
‘producto’,
new Blob([JSON.stringify(producto)], { type: ‘application/json’ })
);
formData.append(
‘inventario’,
new Blob([JSON.stringify(inventario)], { type: ‘application/json’ })
);

return this.http
.post<Record<string, any>[]>({this.apiUrl}/agregarProducto, formData, {
withCredentials: true,
})
.pipe(catchError(this.handleError));
}

mostrarProductosParaCompra(): Observable<Record<string, any>[]> {
return this.http
.get<Record<string, any>[]>({this.apiUrl}/mostrarProductosParaCompra, {
withCredentials: true,
})
.pipe(catchError(this.handleError));
}


quitarProducto(nombreProducto: string): Observable<Record<string, any>[]> {
const params = new HttpParams().set(
‘nombreProducto’,
nombreProducto.toString()
);
return this.http
.delete<Record<string, any>[]>({this.apiUrl}/quitarProducto, {
params,
withCredentials: true,
})
.pipe(catchError(this.handleError));
}

registrarCompra(proveedor: Proveedor): Observable<any> {
return this.http
.post<any>({this.apiUrl}/registrarCompra, proveedor, {
withCredentials: true,
})
.pipe(catchError(this.handleError));
}
} -

@Injectable({
providedIn: ‘root’,
})

export class AuthGuard {
constructor(private router: Router) {}

canMatch(): boolean | UrlTree {
const isAuthenticated = !!localStorage.getItem(‘isAuthenticated’);
if (isAuthenticated) {
return true;
} else {
console.log(‘Not authenticated, redirecting to /login’);
this.router.navigate([’/login’]);
return false;
}
}
} @Component({
selector: ‘app-root’,
templateUrl: ‘./app.component.html’,
styleUrls: [‘./app.component.css’],
})
export class AppComponent implements OnInit {
title = ‘La Ciabatta’;
isAuthenticated!: boolean;
usuarioEmail: string = ‘’;

constructor(private router: Router) {}

ngOnInit(): void {
this.checkAuthentication();
}

checkAuthentication(): void {
this.router.events.subscribe((event) => {
if (event instanceof NavigationEnd) {
this.isAuthenticated = !!localStorage.getItem(‘isAuthenticated’);
this.usuarioEmail = localStorage.getItem(‘userEmail’)!;
}
});
}

logout(): void {
this.isAuthenticated = false;
localStorage.removeItem(‘isAuthenticated’);
localStorage.removeItem(‘userEmail’);
localStorage.removeItem(‘userRole’);
window.location.href = ‘/login’;
}
}<div *ngIf=“isAuthenticated”>
<app-nav></app-nav>
</div>
<br>
<div class=“container pb-5”>
<router-outlet></router-outlet>
</div>
<br>
<div class=“fixed-bottom” *ngIf=“isAuthenticated”>
<app-footer></app-footer>
</div>

<div class=“offcanvas offcanvas-start text-bg-dark Menu” data-bs-scroll=“true” data-bs-backdrop=“false” tabindex=“-1”
id=“offcanvasScrolling” aria-labelledby=“offcanvasScrollingLabel”>
<div class=“offcanvas-header”>
<h5 class=“offcanvas-title” id=“offcanvasScrollingLabel”>{{usuarioEmail}}</h5>
<button type=“button” class=“btn-close btn-close-white” data-bs-dismiss=“offcanvas” aria-label=“Close”></button>
</div>
<div class=“offcanvas-body”>

<div class=“accordion”>

<div class=“accordion-item”>
<h2 class=“accordion-header”>
<button class=“accordion-button collapsed” type=“button” data-bs-toggle=“collapse” data-bs-target=“#primero”
aria-expanded=“false” aria-controls=“primero”>
<i class=“bi bi-currency-dollar me-3”></i><span>VENTA</span>
</button>
</h2>
<div id=“primero” class=“accordion-collapse collapse”>
<div class=“accordion-body”>
<ul>
<li><a routerLink=“/venta/ventaProducto”>VENTA DE PRODUCTOS</a></li>
<li><a routerLink=“/venta/listarVentas”>VENTAS REALIZADAS</a></li>
</ul>
</div>
</div>
</div>

<div class=“accordion-item”>
<h2 class=“accordion-header”>
<button class=“accordion-button collapsed” type=“button” data-bs-toggle=“collapse” data-bs-target=“#segundo”
aria-expanded=“false” aria-controls=“segundo”>
<i class=“bi bi-check2-square me-3”></i><span>COMPRA</span>
</button>
</h2>
<div id=“segundo” class=“accordion-collapse collapse”>
<div class=“accordion-body”>
<ul>
<li><a routerLink=“/compra/compraProducto”>COMPRA DE PRODUCTOS</a></li>
<li><a routerLink=“/compra/listarCompras”>COMPRAS REALIZADAS</a></li>
</ul>
</div>
</div>
</div>

<div class=“accordion-item”>
<h2 class=“accordion-header”>
<button class=“accordion-button collapsed” type=“button” data-bs-toggle=“collapse” data-bs-target=“#tercero”
aria-expanded=“false” aria-controls=“tercero”>
<i class=“bi bi-clipboard2-data me-3”></i><span>INVENTARIO</span>
</button>
</h2>
<div id=“tercero” class=“accordion-collapse collapse”>
<div class=“accordion-body”>
<ul>
<li><a routerLink=“/inventario/listarInventario”>HISTORIAL</a></li>
<li><a routerLink=“/inventario/listarMovimientoInventario”>MOVIMIENTOS</a></li>
<li><a routerLink=“/inventario/listarAlmacen”>REPORTE ALMACÉN</a></li>
</ul>
</div>
</div>
</div>

<div class=“accordion-item”>
<h2 class=“accordion-header”>
<button class=“accordion-button collapsed” type=“button” data-bs-toggle=“collapse” data-bs-target=“#cuarto”
aria-expanded=“false” aria-controls=“cuarto”>
<i class=“bi bi-database-check me-3”></i><span>MANTENIMIENTO</span>
</button>
</h2>
<div id=“cuarto” class=“accordion-collapse collapse”>
<div class=“accordion-body”>
<ul>
<li><a routerLink=“/almacen/listar”>ALMACÉN</a></li>
<li><a routerLink=“/categoria/listar”>CATEGORIA</a></li>
<li><a routerLink=“/cliente/listar”>CLIENTE</a></li>
<li><a routerLink=“/producto/listar”>PRODUCTO</a></li>
<li><a routerLink=“/usuario/listar”>USUARIO</a></li>
</ul>
</div>
</div>
</div>

</div>

</div>

<p class=“cerrar-sesion ms-4 mb-4”><i class=“bi bi-x-square”></i><a (click)=“logout()” class=“ms-2 mb-5”>Cerrar
Sesión</a></p>

</div> - donde pdria estar el error?