diff --git a/modules/@angular/router-deprecated/src/router.ts b/modules/@angular/router-deprecated/src/router.ts
index 7587686a21..62492b1da2 100644
--- a/modules/@angular/router-deprecated/src/router.ts
+++ b/modules/@angular/router-deprecated/src/router.ts
@@ -9,6 +9,7 @@ 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);
@@ -131,8 +132,9 @@ export class Router {
    */
   isRouteActive(instruction: Instruction): boolean {
     var router: Router = this;
+    var currentInstruction = this.currentInstruction;
 
-    if (isBlank(this.currentInstruction)) {
+    if (isBlank(currentInstruction)) {
       return false;
     }
 
@@ -142,22 +144,28 @@ export class Router {
       instruction = instruction.child;
     }
 
-    if (isBlank(instruction.component) || isBlank(this.currentInstruction.component) ||
-        this.currentInstruction.component.routeName != instruction.component.routeName) {
-      return false;
-    }
+    let reason = true;
 
-    let paramEquals = true;
+    // 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);
 
-    if (isPresent(this.currentInstruction.component.params)) {
-      StringMapWrapper.forEach(instruction.component.params, (value, key) => {
-        if (this.currentInstruction.component.params[key] !== value) {
-          paramEquals = false;
-        }
-      });
-    }
-
-    return paramEquals;
+    // ignore DefaultInstruction
+    return reason && (isBlank(instruction) || instruction instanceof DefaultInstruction);
   }
 
 
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 55d7b2cf11..edf1c79372 100644
--- a/modules/@angular/router-deprecated/test/integration/router_link_spec.ts
+++ b/modules/@angular/router-deprecated/test/integration/router_link_spec.ts
@@ -295,6 +295,51 @@ 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', () => {