diff --git a/modules/@angular/router-deprecated/src/router.ts b/modules/@angular/router-deprecated/src/router.ts
index ad8c6bd5f3..f6098fedb3 100644
--- a/modules/@angular/router-deprecated/src/router.ts
+++ b/modules/@angular/router-deprecated/src/router.ts
@@ -9,7 +9,6 @@ import {RouterOutlet} from './directives/router_outlet';
import {getCanActivateHook} from './lifecycle/route_lifecycle_reflector';
import {RouteDefinition} from './route_config/route_config_impl';
import {Injectable, Inject} from '@angular/core';
-import {DefaultInstruction} from "./instruction";
let _resolveToTrue = PromiseWrapper.resolve(true);
let _resolveToFalse = PromiseWrapper.resolve(false);
@@ -132,9 +131,8 @@ export class Router {
*/
isRouteActive(instruction: Instruction): boolean {
var router: Router = this;
- var currentInstruction = this.currentInstruction;
- if (isBlank(currentInstruction)) {
+ if (isBlank(this.currentInstruction)) {
return false;
}
@@ -144,28 +142,22 @@ export class Router {
instruction = instruction.child;
}
- let reason = true;
+ if (isBlank(instruction.component) || isBlank(this.currentInstruction.component) ||
+ this.currentInstruction.component.routeName != instruction.component.routeName) {
+ return false;
+ }
- // check the instructions in depth
- do {
- if (isBlank(instruction.component) || isBlank(currentInstruction.component) ||
- currentInstruction.component.routeName != instruction.component.routeName) {
- return false;
- }
- if (isPresent(instruction.component.params)) {
- StringMapWrapper.forEach(instruction.component.params, (value, key) => {
- if (currentInstruction.component.params[key] !== value) {
- reason = false;
- }
- });
- }
- currentInstruction = currentInstruction.child;
- instruction = instruction.child;
- } while (isPresent(currentInstruction) && isPresent(instruction) &&
- !(instruction instanceof DefaultInstruction) && reason);
+ let paramEquals = true;
- // ignore DefaultInstruction
- return reason && (isBlank(instruction) || instruction instanceof DefaultInstruction);
+ if (isPresent(this.currentInstruction.component.params)) {
+ StringMapWrapper.forEach(instruction.component.params, (value, key) => {
+ if (this.currentInstruction.component.params[key] !== value) {
+ paramEquals = false;
+ }
+ });
+ }
+
+ return paramEquals;
}
diff --git a/modules/@angular/router-deprecated/test/integration/router_link_spec.ts b/modules/@angular/router-deprecated/test/integration/router_link_spec.ts
index edf1c79372..55d7b2cf11 100644
--- a/modules/@angular/router-deprecated/test/integration/router_link_spec.ts
+++ b/modules/@angular/router-deprecated/test/integration/router_link_spec.ts
@@ -295,51 +295,6 @@ export function main() {
router.navigateByUrl('/child-with-grandchild/grandchild?extra=0');
});
}));
-
- it('should not be added to links in other child routes',
- inject([AsyncTestCompleter], (async) => {
- router.config([
- new Route({path: '/child', component: HelloCmp, name: 'Child'}),
- new Route({
- path: '/child-with-grandchild/...',
- component: ParentCmp,
- name: 'ChildWithGrandchild'
- }),
- new Route({
- path: '/child-with-other-grandchild/...',
- component: ParentCmp,
- name: 'ChildWithOtherGrandchild'
- })
- ])
- .then((_) => compile(`Child
- Better Child
- Better Child
- `))
- .then((_) => {
- var element = fixture.debugElement.nativeElement;
-
- fixture.detectChanges();
-
- var link1 = getDOM().querySelector(element, '.child-link');
- var link2 = getDOM().querySelector(element, '.child-with-grandchild-link');
- var link3 = getDOM().querySelector(element, '.child-with-other-grandchild-link');
-
- expect(link1).not.toHaveCssClass('router-link-active');
- expect(link2).not.toHaveCssClass('router-link-active');
- expect(link3).not.toHaveCssClass('router-link-active');
-
- router.subscribe((_) => {
- fixture.detectChanges();
-
- expect(link1).not.toHaveCssClass('router-link-active');
- expect(link2).toHaveCssClass('router-link-active');
- expect(link3).not.toHaveCssClass('router-link-active');
-
- async.done();
- });
- router.navigateByUrl('/child-with-grandchild/grandchild?extra=0');
- });
- }));
});
describe('when clicked', () => {