From 1a92e3d406bc869fe6c4c544b6e18e5996b64ef2 Mon Sep 17 00:00:00 2001 From: Dzmitry Shylovich Date: Tue, 6 Dec 2016 17:19:50 +0300 Subject: [PATCH] refactor(router): clean up RouterLinkActive (#13273) PR Close #13273 --- .../src/directives/router_link_active.ts | 22 ++++++++----------- tools/public_api_guard/router/index.d.ts | 6 ++--- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/modules/@angular/router/src/directives/router_link_active.ts b/modules/@angular/router/src/directives/router_link_active.ts index 8f782f8f0b..d9a6fcbf08 100644 --- a/modules/@angular/router/src/directives/router_link_active.ts +++ b/modules/@angular/router/src/directives/router_link_active.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {AfterContentInit, ContentChildren, Directive, ElementRef, Input, OnChanges, OnDestroy, QueryList, Renderer} from '@angular/core'; +import {AfterContentInit, ChangeDetectorRef, ContentChildren, Directive, ElementRef, Input, OnChanges, OnDestroy, QueryList, Renderer} from '@angular/core'; import {Subscription} from 'rxjs/Subscription'; import {NavigationEnd, Router} from '../router'; @@ -82,7 +82,7 @@ import {RouterLink, RouterLinkWithHref} from './router_link'; exportAs: 'routerLinkActive', }) export class RouterLinkActive implements OnChanges, - OnDestroy, AfterContentInit { + OnDestroy, AfterContentInit { @ContentChildren(RouterLink, {descendants: true}) links: QueryList; @ContentChildren(RouterLinkWithHref, {descendants: true}) linksWithHrefs: QueryList; @@ -103,22 +103,18 @@ export class RouterLinkActive implements OnChanges, get isActive(): boolean { return this.hasActiveLink(); } ngAfterContentInit(): void { - this.links.changes.subscribe(s => this.update()); - this.linksWithHrefs.changes.subscribe(s => this.update()); + this.links.changes.subscribe(_ => this.update()); + this.linksWithHrefs.changes.subscribe(_ => this.update()); this.update(); } @Input() set routerLinkActive(data: string[]|string) { - if (Array.isArray(data)) { - this.classes = data; - } else { - this.classes = data.split(' '); - } + this.classes = (Array.isArray(data) ? data : data.split(' ')).filter(c => !!c); } - ngOnChanges(changes: {}): any { this.update(); } - ngOnDestroy(): any { this.subscription.unsubscribe(); } + ngOnChanges(changes: {}): void { this.update(); } + ngOnDestroy(): void { this.subscription.unsubscribe(); } private update(): void { if (!this.links || !this.linksWithHrefs || !this.router.navigated) return; @@ -133,11 +129,11 @@ export class RouterLinkActive implements OnChanges, private isLinkActive(router: Router): (link: (RouterLink|RouterLinkWithHref)) => boolean { return (link: RouterLink | RouterLinkWithHref) => - router.isActive(link.urlTree, this.routerLinkActiveOptions.exact); + router.isActive(link.urlTree, this.routerLinkActiveOptions.exact); } private hasActiveLink(): boolean { return this.links.some(this.isLinkActive(this.router)) || - this.linksWithHrefs.some(this.isLinkActive(this.router)); + this.linksWithHrefs.some(this.isLinkActive(this.router)); } } diff --git a/tools/public_api_guard/router/index.d.ts b/tools/public_api_guard/router/index.d.ts index 641beddecc..9c4da71bb8 100644 --- a/tools/public_api_guard/router/index.d.ts +++ b/tools/public_api_guard/router/index.d.ts @@ -262,10 +262,10 @@ export declare class RouterLinkActive implements OnChanges, OnDestroy, AfterCont routerLinkActiveOptions: { exact: boolean; }; - constructor(router: Router, element: ElementRef, renderer: Renderer); + constructor(router: Router, element: ElementRef, renderer: Renderer, cdr: ChangeDetectorRef); ngAfterContentInit(): void; - ngOnChanges(changes: {}): any; - ngOnDestroy(): any; + ngOnChanges(changes: {}): void; + ngOnDestroy(): void; } /** @stable */