From dac5860a47eae5fdebe0432bf4cd28091d125387 Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Sun, 27 Nov 2022 18:09:40 +0100 Subject: [PATCH] refactor(router): remove non-null assertions (#48244) As part of #24571, removing non-null assertions (where appropriate) PR Close #48244 --- packages/router/src/router_scroller.ts | 14 ++++---------- packages/router/src/router_state.ts | 14 +++++--------- packages/router/src/url_tree.ts | 6 ++---- .../router/test/regression_integration.spec.ts | 12 ++++++------ 4 files changed, 17 insertions(+), 29 deletions(-) diff --git a/packages/router/src/router_scroller.ts b/packages/router/src/router_scroller.ts index cdb843e4a4d..aaeb6e0c6bd 100644 --- a/packages/router/src/router_scroller.ts +++ b/packages/router/src/router_scroller.ts @@ -19,10 +19,8 @@ export const ROUTER_SCROLLER = new InjectionToken(''); @Injectable() export class RouterScroller implements OnDestroy { - // TODO(issue/24571): remove '!'. - private routerEventsSubscription!: Unsubscribable; - // TODO(issue/24571): remove '!'. - private scrollEventsSubscription!: Unsubscribable; + private routerEventsSubscription?: Unsubscribable; + private scrollEventsSubscription?: Unsubscribable; private lastId = 0; private lastSource: 'imperative'|'popstate'|'hashchange'|undefined = 'imperative'; @@ -105,11 +103,7 @@ export class RouterScroller implements OnDestroy { /** @nodoc */ ngOnDestroy() { - if (this.routerEventsSubscription) { - this.routerEventsSubscription.unsubscribe(); - } - if (this.scrollEventsSubscription) { - this.scrollEventsSubscription.unsubscribe(); - } + this.routerEventsSubscription?.unsubscribe(); + this.scrollEventsSubscription?.unsubscribe(); } } diff --git a/packages/router/src/router_state.ts b/packages/router/src/router_state.ts index feda957936a..b91bed2be8e 100644 --- a/packages/router/src/router_state.ts +++ b/packages/router/src/router_state.ts @@ -115,9 +115,9 @@ export class ActivatedRoute { /** @internal */ _routerState!: RouterState; /** @internal */ - _paramMap!: Observable; + _paramMap?: Observable; /** @internal */ - _queryParamMap!: Observable; + _queryParamMap?: Observable; /** An Observable of the resolved route title */ readonly title: Observable = @@ -288,17 +288,13 @@ export class ActivatedRouteSnapshot { /** @internal */ _resolve: ResolveData; /** @internal */ - // TODO(issue/24571): remove '!'. - _resolvedData!: Data; + _resolvedData?: Data; /** @internal */ - // TODO(issue/24571): remove '!'. _routerState!: RouterStateSnapshot; /** @internal */ - // TODO(issue/24571): remove '!'. - _paramMap!: ParamMap; + _paramMap?: ParamMap; /** @internal */ - // TODO(issue/24571): remove '!'. - _queryParamMap!: ParamMap; + _queryParamMap?: ParamMap; /** The resolved route title */ get title(): string|undefined { diff --git a/packages/router/src/url_tree.ts b/packages/router/src/url_tree.ts index 84a8d693b50..4d41083ae03 100644 --- a/packages/router/src/url_tree.ts +++ b/packages/router/src/url_tree.ts @@ -189,8 +189,7 @@ function matrixParamsMatch( */ export class UrlTree { /** @internal */ - // TODO(issue/24571): remove '!'. - _queryParamMap!: ParamMap; + _queryParamMap?: ParamMap; constructor( /** The root segment group of the URL tree */ @@ -299,8 +298,7 @@ export class UrlSegmentGroup { */ export class UrlSegment { /** @internal */ - // TODO(issue/24571): remove '!'. - _parameterMap!: ParamMap; + _parameterMap?: ParamMap; constructor( /** The path part of a URL segment */ diff --git a/packages/router/test/regression_integration.spec.ts b/packages/router/test/regression_integration.spec.ts index 3d70bb7d248..d882c8b30bf 100644 --- a/packages/router/test/regression_integration.spec.ts +++ b/packages/router/test/regression_integration.spec.ts @@ -123,18 +123,18 @@ describe('Integration', () => { ` }) class ComponentWithRouterLink { - // TODO(issue/24571): remove '!'. - @ViewChild(TemplateRef, {static: true}) templateRef!: TemplateRef; - // TODO(issue/24571): remove '!'. + @ViewChild(TemplateRef, {static: true}) templateRef?: TemplateRef; @ViewChild('container', {read: ViewContainerRef, static: true}) - container!: ViewContainerRef; + container?: ViewContainerRef; addLink() { - this.container.createEmbeddedView(this.templateRef, {$implicit: '/simple'}); + if (this.templateRef) { + this.container?.createEmbeddedView(this.templateRef, {$implicit: '/simple'}); + } } removeLink() { - this.container.clear(); + this.container?.clear(); } }