diff --git a/packages/common/src/location/location.ts b/packages/common/src/location/location.ts index 2d52712538d..2c00e5f5b40 100644 --- a/packages/common/src/location/location.ts +++ b/packages/common/src/location/location.ts @@ -301,7 +301,10 @@ export function createLocation() { } function _stripBasePath(basePath: string, url: string): string { - return basePath && url.startsWith(basePath) ? url.substring(basePath.length) : url; + if (basePath === url) { + return ''; + } + return basePath && url.startsWith(basePath + '/') ? url.substring(basePath.length) : url; } function _stripIndexHtml(url: string): string { diff --git a/packages/common/test/location/location_spec.ts b/packages/common/test/location/location_spec.ts index 74cdca9f21a..8622304fb93 100644 --- a/packages/common/test/location/location_spec.ts +++ b/packages/common/test/location/location_spec.ts @@ -266,4 +266,18 @@ describe('Location Class', () => { expect(location.normalize(url)).toBe(route); }); }); + + describe('location.normalize(url) should return correct route', () => { + it('in case url starts with the substring equals APP_BASE_HREF', () => { + const baseHref = '/en'; + const url = '/enigma'; + + TestBed.configureTestingModule({providers: [{provide: APP_BASE_HREF, useValue: baseHref}]}); + + const location = TestBed.inject(Location); + + expect(location.normalize(url)).toBe(url); + expect(location.normalize(baseHref + url)).toBe(url); + }); + }); });