diff --git a/src/lib/services/composite-route.guard.ts b/src/lib/services/composite-route.guard.ts index 0d7f9d7..510e99f 100644 --- a/src/lib/services/composite-route.guard.ts +++ b/src/lib/services/composite-route.guard.ts @@ -86,3 +86,23 @@ export function orderedAsyncGuards(guards: Array): CanActivateFn { ); }; } + +export function unorderedAsyncGuards(guards: Array): CanActivateFn { + return async (route, state) => { + const injector = inject(Injector); + const loadingService = inject(LoadingService); + + loadingService.start(); + + try { + const result = await Promise.all(guards.map(guard => runInInjectionContext(injector, () => guard(route, state)))); + loadingService.stop(); + return result.every(Boolean); + } catch (error) { + console.error(error); + loadingService.stop(); + } + + return false; + }; +}