MCPcopy Index your code
hub / github.com/angular/angular / runCanDeactivate

Function runCanDeactivate

packages/router/src/operators/check_guards.ts:209–228  ·  view source on GitHub ↗
(
  component: Object | null,
  currARS: ActivatedRouteSnapshot,
  currRSS: RouterStateSnapshot,
  futureRSS: RouterStateSnapshot,
)

Source from the content-addressed store, hash-verified

207}
208
209function 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
230export function runCanLoadGuards(
231 injector: EnvironmentInjector,

Callers 1

runCanDeactivateChecksFunction · 0.85

Calls 8

isCanDeactivateFunction · 0.90
runInInjectionContextFunction · 0.90
wrapIntoObservableFunction · 0.90
prioritizedGuardValueFunction · 0.90
firstFunction · 0.85
mapMethod · 0.80
canDeactivateMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…