From df07a8a872f8c034c611d2196a7f19f7dfe1d2e6 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Thu, 21 May 2020 01:07:38 +0300 Subject: [PATCH] fix(core): rotue reuse problem #4019 --- .../src/lib/services/localization.service.ts | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/services/localization.service.ts b/npm/ng-packs/packages/core/src/lib/services/localization.service.ts index 408dea1058..565a408c7c 100644 --- a/npm/ng-packs/packages/core/src/lib/services/localization.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/localization.service.ts @@ -1,4 +1,4 @@ -import { Injectable, NgZone, Optional, SkipSelf } from '@angular/core'; +import { Injectable, Injector, NgZone, Optional, SkipSelf } from '@angular/core'; import { ActivatedRouteSnapshot, Router } from '@angular/router'; import { Actions, ofActionSuccessful, Store } from '@ngxs/store'; import { noop, Observable } from 'rxjs'; @@ -27,7 +27,7 @@ export class LocalizationService { constructor( private actions: Actions, private store: Store, - private router: Router, + private injector: Injector, private ngZone: NgZone, @Optional() @SkipSelf() @@ -42,19 +42,22 @@ export class LocalizationService { this.languageChange.subscribe(({ payload }) => this.registerLocale(payload)); } - setRouteReuse(reuse: ShouldReuseRoute) { - this.router.routeReuseStrategy.shouldReuseRoute = reuse; - } + /** + * + * @deprecated To be deleted in v2.9 + */ + setRouteReuse(reuse: ShouldReuseRoute) {} registerLocale(locale: string) { - const { shouldReuseRoute } = this.router.routeReuseStrategy; - this.setRouteReuse(() => false); - this.router.navigated = false; + const router = this.injector.get(Router); + const { shouldReuseRoute } = router.routeReuseStrategy; + router.routeReuseStrategy.shouldReuseRoute = () => false; + router.navigated = false; return registerLocale(locale).then(() => { this.ngZone.run(async () => { - await this.router.navigateByUrl(this.router.url).catch(noop); - this.setRouteReuse(shouldReuseRoute); + await router.navigateByUrl(router.url).catch(noop); + router.routeReuseStrategy.shouldReuseRoute = shouldReuseRoute; }); }); }