( component: Object | null, currARS: ActivatedRouteSnapshot, currRSS: RouterStateSnapshot, futureRSS: RouterStateSnapshot, )
| 207 | } |
| 208 | |
| 209 | function runCanDeactivate( |
| 210 | component: Object | null, |
| 211 | currARS: ActivatedRouteSnapshot, |
| 212 | currRSS: RouterStateSnapshot, |
| 213 | futureRSS: RouterStateSnapshot, |
| 214 | ): Observable<GuardResult> { |
| 215 | const canDeactivate = currARS && currARS.routeConfig ? currARS.routeConfig.canDeactivate : null; |
| 216 | if (!canDeactivate || canDeactivate.length === 0) return of(true); |
| 217 | const canDeactivateObservables = canDeactivate.map((c: any) => { |
| 218 | const closestInjector = currARS._environmentInjector; |
| 219 | const guard = getTokenOrFunctionIdentity<any>(c, closestInjector); |
| 220 | const guardVal = isCanDeactivate(guard) |
| 221 | ? guard.canDeactivate(component, currARS, currRSS, futureRSS) |
| 222 | : runInInjectionContext(closestInjector, () => |
| 223 | (guard as CanDeactivateFn<any>)(component, currARS, currRSS, futureRSS), |
| 224 | ); |
| 225 | return wrapIntoObservable(guardVal).pipe(first()); |
| 226 | }); |
| 227 | return of(canDeactivateObservables).pipe(prioritizedGuardValue()); |
| 228 | } |
| 229 | |
| 230 | export function runCanLoadGuards( |
| 231 | injector: EnvironmentInjector, |
no test coverage detected
searching dependent graphs…