-
Notifications
You must be signed in to change notification settings - Fork 0
Service Loading
Servizio singleton (providedIn: 'root') che gestisce lo stato di caricamento globale tramite un contatore interno. Più operazioni concorrenti possono richiedere lo spinner indipendentemente — lo spinner scompare solo quando tutte le operazioni sono completate.
| Metodo / Proprietà | Tipo | Descrizione |
|---|---|---|
show() |
void |
Incrementa il contatore (mostra lo spinner) |
hide() |
void |
Decrementa il contatore (nasconde lo spinner se arriva a 0) |
isLoading |
Signal<boolean> |
true quando il contatore è > 0 |
Il contatore non scende mai sotto 0.
readonly loading = inject(LoadingService);
async carica() {
this.loading.show();
try {
this.dati = await firstValueFrom(this.service.getDati());
} finally {
this.loading.hide(); // garantito anche in caso di errore
}
}readonly loading = inject(LoadingService);<!-- Disabilita un bottone durante il caricamento -->
<button mat-flat-button [disabled]="loading.isLoading()" (click)="salva()">
Salva
</button>
<!-- Mostra un indicatore inline -->
@if (loading.isLoading()) {
<mat-progress-bar mode="indeterminate" />
}Aggiungere loadingInterceptor per gestire automaticamente lo stato di caricamento su tutte le chiamate HTTP:
// app.config.ts
provideHttpClient(
withInterceptors([contextInterceptor, loadingInterceptor])
)Con l'interceptor attivo, ogni chiamata HTTP chiama automaticamente show() all'inizio e hide() al completamento.
- → Loading Overlay — componente visuale spinner
- → Interceptors —
loadingInterceptorecontextInterceptor
Sviluppato e mantenuto da GPA — Gruppo Progetti Avanzati s.r.l. · gpa@gpagroup.it · +39 065913642 · P.IVA 05049391005 · ISO 9001 · ISO 27001
Sede legale: Via Ferdinando Galiani, 68 — 00191 Roma | Sedi operative: Piazzale Asia 21, Roma · Via Badoero 67, Roma · Viale Chiavellati 9, Foligno (PG)
npm · GitHub · Segnala un problema · Licenza MIT