MCPcopy Create free account
hub / github.com/angular/angular / deactivateRouteAndItsChildren

Function deactivateRouteAndItsChildren

packages/router/src/utils/preactivation.ts:208–247  ·  view source on GitHub ↗
(
  route: TreeNode<ActivatedRouteSnapshot>,
  context: OutletContext | null,
  parentContexts: ChildrenOutletContexts | null,
  checks: Checks,
)

Source from the content-addressed store, hash-verified

206}
207
208function deactivateRouteAndItsChildren(
209 route: TreeNode<ActivatedRouteSnapshot>,
210 context: OutletContext | null,
211 parentContexts: ChildrenOutletContexts | null,
212 checks: Checks,
213): void {
214 const children = nodeChildrenAsMap(route);
215 const r = route.value;
216
217 Object.entries(children).forEach(([childName, node]) => {
218 if (!r.component) {
219 // For componentless routes, children share the parent's outlet contexts. Look up each
220 // child by its outlet name in parentContexts rather than passing the same context
221 // (which was derived from the componentless route's own outlet and may be null or wrong).
222 deactivateRouteAndItsChildren(
223 node,
224 parentContexts ? parentContexts.getContext(childName) : null,
225 parentContexts,
226 checks,
227 );
228 } else if (context) {
229 deactivateRouteAndItsChildren(
230 node,
231 context.children.getContext(childName),
232 context.children,
233 checks,
234 );
235 } else {
236 deactivateRouteAndItsChildren(node, null, null, checks);
237 }
238 });
239
240 if (!r.component) {
241 checks.canDeactivateChecks.push(new CanDeactivate(null, r));
242 } else if (context && context.outlet && context.outlet.isActivated) {
243 checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r));
244 } else {
245 checks.canDeactivateChecks.push(new CanDeactivate(null, r));
246 }
247}

Callers 2

getChildRouteGuardsFunction · 0.85
getRouteGuardsFunction · 0.85

Calls 5

nodeChildrenAsMapFunction · 0.90
getContextMethod · 0.65
forEachMethod · 0.45
entriesMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected