Angular ======= The sources for this package are in the main [Angular](https://github.com/angular/angular) repo. Please file issues and pull requests against that repo. License: MIT 改动 ======= 在 ActivateRoutes.prototype.activateRoutes添加了 ```JavaScript ActivateRoutes.prototype.activateRoutes = function (futureNode, currNode, parentContexts) { var future = futureNode.value; var curr = currNode ? currNode.value : null; advanceActivatedRoute(future); // reusing the node if (future === curr) { if (future.component) { // If we have a normal route, we need to go through an outlet. var context = parentContexts.getOrCreateContext(future.outlet); this.activateChildRoutes(futureNode, currNode, context.children); } else { // if we have a componentless route, we recurse but keep the same outlet map. this.activateChildRoutes(futureNode, currNode, parentContexts); } } else { if (future.component) { // if we have a normal route, we need to place the component into the outlet and recurse. var context = parentContexts.getOrCreateContext(future.outlet); if (this.routeReuseStrategy.shouldAttach(future.snapshot)) { var stored = this.routeReuseStrategy.retrieve(future.snapshot); this.routeReuseStrategy.store(future.snapshot, null); context.children.onOutletReAttached(stored.contexts); context.attachRef = stored.componentRef; context.route = stored.route.value; if (context.outlet) { // Attach right away when the outlet has already been instantiated // Otherwise attach from `RouterOutlet.ngOnInit` when it is instantiated context.outlet.attach(stored.componentRef, stored.route.value); } //region 原代码 advanceActivatedRouteNodeAndItsChildren(stored.route); //endregion //region 改动后 if(context.children.contexts != null && context.children.contexts.size > 0){ this.activateChildRoutes(futureNode, null, context.children); advanceActivatedRoute(stored.route.value); }else{ advanceActivatedRouteNodeAndItsChildren(stored.route); } //endregion } else { var config = parentLoadedConfig(future.snapshot); var cmpFactoryResolver = config ? config.module.componentFactoryResolver : null; context.attachRef = null; context.route = future; context.resolver = cmpFactoryResolver; if (context.outlet) { // Activate the outlet when it has already been instantiated // Otherwise it will get activated from its `ngOnInit` when instantiated context.outlet.activateWith(future, cmpFactoryResolver); } this.activateChildRoutes(futureNode, null, context.children); } } else { // if we have a componentless route, we recurse but keep the same outlet map. this.activateChildRoutes(futureNode, null, parentContexts); } } }; return ActivateRoutes; }()); ``` 具体效果