diff --git a/src/lib/services/composite-route.guard.ts b/src/lib/services/composite-route.guard.ts index 5f425c9..2204906 100644 --- a/src/lib/services/composite-route.guard.ts +++ b/src/lib/services/composite-route.guard.ts @@ -3,6 +3,7 @@ import { inject, Injectable, InjectionToken, Injector, runInInjectionContext } f import { concatMap, firstValueFrom, from, last, of, takeWhile } from 'rxjs'; import { LoadingService } from '../loading'; import { SkeletonService } from './skeleton.service'; +import { tap } from 'rxjs/operators'; @Injectable({ providedIn: 'root', @@ -68,8 +69,10 @@ export type AsyncGuard = (route: ActivatedRouteSnapshot, state: RouterStateSnaps export function orderedAsyncGuards(guards: Array): CanActivateFn { return (route, state) => { const injector = inject(Injector); + const loadingService = inject(LoadingService); return from(guards).pipe( + tap(() => loadingService.start()), // For each guard, fire canActivate and wait for it // to complete. concatMap(guard => runInInjectionContext(injector, () => guard(route, state))), @@ -78,6 +81,7 @@ export function orderedAsyncGuards(guards: Array): CanActivateFn { takeWhile(value => value === true, /* inclusive */ true), // Return the last guard's result. last(), + tap(() => loadingService.stop()), ); }; }