This is the archived documentation for Angular v6. Please visit angular.io to see documentation for the current version of Angular.

Location

A service that applications can use to interact with a browser's URL.

See more...

      
      class Location {
  static normalizeQueryParams(params: string): string
  static joinWithSlash(start: string, end: string): string
  static stripTrailingSlash(url: string): string
  path(includeHash: boolean = false): string
  isCurrentPathEqualTo(path: string, query: string = ''): boolean
  normalize(url: string): string
  prepareExternalUrl(url: string): string
  go(path: string, query: string = '', state: any = null): void
  replaceState(path: string, query: string = '', state: any = null): void
  forward(): void
  back(): void
  subscribe(onNext: (value: PopStateEvent) => void, onThrow?: ((exception: any) => void) | null, onReturn?: (() => void) | null): SubscriptionLike
}
    

Subclasses

Description

Depending on which LocationStrategy is used, Location will either persist to the URL's path or the URL's hash segment.

Static methods

Given a string of url parameters, prepend with '?' if needed, otherwise return parameters as is.

static normalizeQueryParams(params: string): string
      
      static normalizeQueryParams(params: string): string
    

Parameters

params

Type: string.

Returns

string

Given 2 parts of a url, join them with a slash if needed.

static joinWithSlash(start: string, end: string): string
      
      static joinWithSlash(start: string, end: string): string
    

Parameters

start

Type: string.

end

Type: string.

Returns

string

If url has a trailing slash, remove it, otherwise return url as is. This method looks for the first occurrence of either #, ?, or the end of the line as / characters after any of these should not be replaced.

static stripTrailingSlash(url: string): string
      
      static stripTrailingSlash(url: string): string
    

Parameters

url

Type: string.

Returns

string

Methods

Returns the normalized URL path.

path(includeHash: boolean = false): string
      
      path(includeHash: boolean = false): string
    

Parameters

includeHash

Type: boolean.

Optional. Default is false.

Returns

string

Normalizes the given path and compares to the current normalized path.

isCurrentPathEqualTo(path: string, query: string = ''): boolean
      
      isCurrentPathEqualTo(path: string, query: string = ''): boolean
    

Parameters

path

Type: string.

query

Type: string.

Optional. Default is ''.

Returns

boolean

Given a string representing a URL, returns the normalized URL path without leading or trailing slashes.

normalize(url: string): string
      
      normalize(url: string): string
    

Parameters

url

Type: string.

Returns

string

Given a string representing a URL, returns the platform-specific external URL path. If the given URL doesn't begin with a leading slash ('/'), this method adds one before normalizing. This method will also add a hash if HashLocationStrategy is used, or the APP_BASE_HREF if the PathLocationStrategy is in use.

prepareExternalUrl(url: string): string
      
      prepareExternalUrl(url: string): string
    

Parameters

url

Type: string.

Returns

string

Changes the browsers URL to the normalized version of the given URL, and pushes a new item onto the platform's history.

go(path: string, query: string = '', state: any = null): void
      
      go(path: string, query: string = '', state: any = null): void
    

Parameters

path

Type: string.

query

Type: string.

Optional. Default is ''.

state

Type: any.

Optional. Default is null.

Returns

void

Changes the browsers URL to the normalized version of the given URL, and replaces the top item on the platform's history stack.

replaceState(path: string, query: string = '', state: any = null): void
      
      replaceState(path: string, query: string = '', state: any = null): void
    

Parameters

path

Type: string.

query

Type: string.

Optional. Default is ''.

state

Type: any.

Optional. Default is null.

Returns

void

Navigates forward in the platform's history.

forward(): void
      
      forward(): void
    

Parameters

There are no parameters.

Returns

void

Navigates back in the platform's history.

back(): void
      
      back(): void
    

Parameters

There are no parameters.

Returns

void

Subscribe to the platform's popState events.

subscribe(onNext: (value: PopStateEvent) => void, onThrow?: ((exception: any) => void) | null, onReturn?: (() => void) | null): SubscriptionLike
      
      subscribe(onNext: (value: PopStateEvent) => void, onThrow?: ((exception: any) => void) | null, onReturn?: (() => void) | null): SubscriptionLike
    

Parameters

onNext

Type: (value: PopStateEvent) => void.

onThrow

Type: ((exception: any) => void) | null.

Optional. Default is undefined.

onReturn

Type: (() => void) | null.

Optional. Default is undefined.

Returns

SubscriptionLike

Usage notes

It's better to use Router service to trigger route changes. Use Location only if you need to interact with or create normalized URLs outside of routing.

Location is responsible for normalizing the URL against the application's base href. A normalized URL is absolute from the URL host, includes the application's base href, and has no trailing slash:

  • /my/app/user/123 is normalized
  • my/app/user/123 is not normalized
  • /my/app/user/123/ is not normalized

Example

import {Location, LocationStrategy, PathLocationStrategy} from '@angular/common'; import {Component} from '@angular/core'; @Component({ selector: 'path-location', providers: [Location, {provide: LocationStrategy, useClass: PathLocationStrategy}], template: ` <h1>PathLocationStrategy</h1> Current URL is: <code>{{location.path()}}</code><br> Normalize: <code>/foo/bar/</code> is: <code>{{location.normalize('foo/bar')}}</code><br> ` }) export class PathLocationComponent { location: Location; constructor(location: Location) { this.location = location; } }
      
      
  1. import {Location, LocationStrategy, PathLocationStrategy} from '@angular/common';
  2. import {Component} from '@angular/core';
  3.  
  4. @Component({
  5. selector: 'path-location',
  6. providers: [Location, {provide: LocationStrategy, useClass: PathLocationStrategy}],
  7. template: `
  8. <h1>PathLocationStrategy</h1>
  9. Current URL is: <code>{{location.path()}}</code><br>
  10. Normalize: <code>/foo/bar/</code> is: <code>{{location.normalize('foo/bar')}}</code><br>
  11. `
  12. })
  13. export class PathLocationComponent {
  14. location: Location;
  15. constructor(location: Location) { this.location = location; }
  16. }