( routeReuseStrategy: RouteReuseStrategy, curr: TreeNode<ActivatedRouteSnapshot>, prevState: TreeNode<ActivatedRoute> | undefined, newlyCreatedRoutes: Set<ActivatedRoute>, )
| 33 | } |
| 34 | |
| 35 | function createNode( |
| 36 | routeReuseStrategy: RouteReuseStrategy, |
| 37 | curr: TreeNode<ActivatedRouteSnapshot>, |
| 38 | prevState: TreeNode<ActivatedRoute> | undefined, |
| 39 | newlyCreatedRoutes: Set<ActivatedRoute>, |
| 40 | ): TreeNode<ActivatedRoute> { |
| 41 | // reuse an activated route that is currently displayed on the screen |
| 42 | if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) { |
| 43 | const value = prevState.value; |
| 44 | value._futureSnapshot = curr.value; |
| 45 | const children = createOrReuseChildren(routeReuseStrategy, curr, prevState, newlyCreatedRoutes); |
| 46 | return new TreeNode<ActivatedRoute>(value, children); |
| 47 | } else { |
| 48 | if (routeReuseStrategy.shouldAttach(curr.value)) { |
| 49 | // retrieve an activated route that is used to be displayed, but is not currently displayed |
| 50 | const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value); |
| 51 | if (detachedRouteHandle !== null) { |
| 52 | const tree = (detachedRouteHandle as DetachedRouteHandleInternal).route; |
| 53 | tree.value._futureSnapshot = curr.value; |
| 54 | tree.children = curr.children.map((c) => |
| 55 | createNode(routeReuseStrategy, c, undefined, newlyCreatedRoutes), |
| 56 | ); |
| 57 | return tree; |
| 58 | } |
| 59 | } |
| 60 | |
| 61 | const value = createActivatedRoute(curr.value); |
| 62 | newlyCreatedRoutes.add(value); |
| 63 | const children = curr.children.map((c) => |
| 64 | createNode(routeReuseStrategy, c, undefined, newlyCreatedRoutes), |
| 65 | ); |
| 66 | return new TreeNode<ActivatedRoute>(value, children); |
| 67 | } |
| 68 | } |
| 69 | |
| 70 | function createOrReuseChildren( |
| 71 | routeReuseStrategy: RouteReuseStrategy, |
no test coverage detected
searching dependent graphs…