17

I have a code in my solution which gets baseHref of an app

constructor( private router: Router) {
    let baseHref = this.router._location._baseHref;

You could see what I am getting it via private properties. Is there other way to get base url? aka the url before router added it's parts?

I am using angular2 rc4

Thanks

Simeon Grigorovich
  • 551
  • 1
  • 4
  • 24
  • 5
    In my opinion, this is not a duplicate: The "baseHref" is not necessarily the same as the current page's location. – slartidan Apr 05 '19 at 12:04

1 Answers1

42

The Location class has prepareExternalUrl() that takes base href into account.

You can also try to inject constructor(@Inject(APP_BASE_HREF) href:string)

It seems APP_BASE_HREF can't be injected anymore without explicitly providing it.

PlatformLocation provides more details about the URL:

  import {PlatformLocation } from '@angular/common';

  constructor(platformLocation: PlatformLocation) {
    console.log((platformLocation as any).location);
    console.log((platformLocation as any).location.href);
    console.log((platformLocation as any).location.origin);
  }

Plunker example

Günter Zöchbauer
  • 623,577
  • 216
  • 2,003
  • 1,567