# Class UrlService

API for URL management

- Defined in src/router/url/url-service.js:19

##### Index

### Constructors

constructor

### Properties

_baseHref
_stopListeningFn
_urlListeners
$browser
$get
$location
$locationProvider
config
hash
location
paramFactory
path
rules
search
stateService
urlRuleFactory
$inject

### Methods

baseHref
compile
href
html5Mode
isMatcher
listen
match
onChange
parts
push
sync
update
url

## Constructors

### constructor

- new UrlService(
  $locationProvider: LocationProvider,
  stateService: StateProvider,
  globals: any,
  urlConfigProvider: UrlConfigProvider,
  ): UrlService

  #### Parameters

  - $locationProvider: LocationProvider
  - stateService: StateProvider
  - globals: any
  - urlConfigProvider: UrlConfigProvider

  #### Returns UrlService

  - Defined in src/router/url/url-service.js:33

## Properties

### _baseHref

_baseHref: string

- Defined in src/router/url/url-service.js:127

### _stopListeningFn

_stopListeningFn: any

- Defined in src/router/url/url-service.js:290

### _urlListeners

_urlListeners: any[]

- Defined in src/router/url/url-service.js:87

### $browser

$browser: Browser

- Defined in src/router/url/url-service.js:39
- Defined in src/router/url/url-service.js:103

### $get

$get: (
| string
| (
(
$location: Location,
$browser: Browser,
$rootScope: Scope,
) => UrlService
)
)[] = ...

#### Type declaration

- string
- ($location: Location, $browser: Browser, $rootScope: Scope) => UrlService
  - - ($location: Location, $browser: Browser, $rootScope: Scope): UrlService

    - #### Parameters

      - $location: Location
      - $browser: Browser
      - $rootScope: Scope

      #### Returns UrlService

- Defined in src/router/url/url-service.js:90

### $location

$location: Location

- Defined in src/router/url/url-service.js:38
- Defined in src/router/url/url-service.js:102

### $locationProvider

$locationProvider: LocationProvider

- Defined in src/router/url/url-service.js:36

### config

config: UrlConfigProvider

The nested [[UrlConfig]] API to configure the URL and retrieve URL information

See: [[UrlConfig]] for details

- Defined in src/router/url/url-service.js:57

### hash

hash: () => string | Location

Gets the hash part of the current url

If the current URL is `/some/path?query=value#anchor`, this returns `anchor`

#### Type declaration

- - (): string | Location

  - #### Returns string | Location

    the hash (anchor) portion of the url

- Defined in src/router/url/url-service.js:85

### location

location: string | Location

- Defined in src/router/url/url-service.js:332

### paramFactory

paramFactory: ParamFactory

Creates a new [[Param]] for a given location (DefType)

- Defined in src/router/url/url-service.js:60

### path

path: () => any

Gets the path part of the current url

If the current URL is `/some/path?query=value#anchor`, this returns `/some/path`

#### Type declaration

- - (): any

  - #### Returns any

    the path portion of the url

- Defined in src/router/url/url-service.js:69

### rules

rules: UrlRules

The nested [[UrlRules]] API for managing URL rules and rewrites

See: [[UrlRules]] for details

- Defined in src/router/url/url-service.js:50

### search

search: () => any

Gets the search part of the current url as an object

If the current URL is `/some/path?query=value#anchor`, this returns `{ query: 'value' }`

#### Type declaration

- - (): any

  - #### Returns any

    the search (query) portion of the url, as an object

- Defined in src/router/url/url-service.js:77

### stateService

stateService: StateProvider

- Defined in src/router/url/url-service.js:34

### urlRuleFactory

urlRuleFactory: UrlRuleFactory

Provides services related to the URL

- Defined in src/router/url/url-service.js:42

### `Static`$inject

$inject: string[] = ...

- Defined in src/router/url/url-service.js:20

## Methods

### baseHref

- baseHref(): string

  #### Returns string

  - Defined in src/router/url/url-service.js:124

### compile

- compile(pattern: any, config: any): UrlMatcher

  Creates a [[UrlMatcher]] for the specified pattern.

  #### Parameters

  - pattern: any

    The URL pattern.

  - config: any

    The config object hash.

  #### Returns UrlMatcher

  The UrlMatcher.

  - Defined in src/router/url/url-service.js:405

### href

- href(urlMatcher: any, params: any, options: any): any

  Builds and returns a URL with interpolated parameters

  #### Example:

      matcher = $umf.compile("/about/:person");
      params = { person: "bob" };
      $bob = $urlService.href(matcher, params);
      // $bob == "/about/bob";

  #### Parameters

  - urlMatcher: any

    The [[UrlMatcher]] object which is used as the template of the URL to generate.

  - params: any

    An object of parameter values to fill the matcher's required parameters.

  - options: any

    Options object. The options are:

    - `absolute` - {boolean=false}, If true will generate an absolute url, e.g. "http://www.example.com/fullurl".

  #### Returns any

  Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`

  - Defined in src/router/url/url-service.js:373

### html5Mode

- html5Mode(): boolean

  #### Returns boolean

  - Defined in src/router/url/url-service.js:117

### isMatcher

- isMatcher(object: any): boolean

  Returns true if the specified object is a [[UrlMatcher]], or false otherwise.

  #### Parameters

  - object: any

    The object to perform the type check against.

  #### Returns boolean

  `true` if the object matches the `UrlMatcher` interface, by implementing all the same methods.

  - Defined in src/router/url/url-service.js:429

### listen

- listen(enabled: any): any

  Starts or stops listening for URL changes

  Call this sometime after calling [[deferIntercept]] to start monitoring the url. This causes ng-router to start listening for changes to the URL, if it wasn't already listening.

  If called with `false`, ng-router will stop listening (call listen(true) to start listening again).

  #### Example:

      fetch('/states.json').then(resp => resp.json()).then(data => {
        data.forEach(state => $stateRegistry.register(state));
        // Start responding to URL changes
        urlService.listen();
        urlService.sync();
      });

  #### Parameters

  - enabled: any

    `true` or `false` to start or stop listening to URL changes

  #### Returns any

  - Defined in src/router/url/url-service.js:285

### match

- match(url: any): any

  Matches a URL

  Given a URL (as a [[UrlParts]] object), check all rules and determine the best matching rule. Return the result as a [[MatchResult]].

  #### Parameters

  - url: any

  #### Returns any

  - Defined in src/router/url/url-service.js:302

### onChange

- onChange(callback: any): () => any
  `Internal`

  Registers a low level url change handler

  Note: Because this is a low level handler, it's not recommended for general use.

  #### Example:

      let deregisterFn = locationServices.onChange((evt) => console.log("url change", evt));

  #### Parameters

  - callback: any

    a function that will be called when the url is changing

  #### Returns () => any

  a function that de-registers the callback

  - Defined in src/router/url/url-service.js:205

### parts

- parts(): { hash: string | Location; path: any; search: any }

  Gets the current URL parts

  This method returns the different parts of the current URL (the [[path]], [[search]], and [[hash]]) as a [[UrlParts]] object.

  #### Returns { hash: string | Location; path: any; search: any }

  - Defined in src/router/url/url-service.js:215

### push

- push(urlMatcher: any, params: any, options: any): void
  `Internal`

  Internal API.

  Pushes a new location to the browser history.

  #### Parameters

  - urlMatcher: any
  - params: any
  - options: any

  #### Returns void

  - Defined in src/router/url/url-service.js:349

### sync

- sync(evt: any): void

  Activates the best rule for the current URL

  Checks the current URL for a matching [[UrlRule]], then invokes that rule's handler. This method is called internally any time the URL has changed.

  This effectively activates the state (or redirect, etc) which matches the current URL.

  #### Example:

      fetch('/states.json').then(resp => resp.json()).then(data => {
        data.forEach(state => $stateRegistry.register(state));
        urlService.listen();
        // Find the matching URL and invoke the handler.
        urlService.sync();
      });

  #### Parameters

  - evt: any

  #### Returns void

  - Defined in src/router/url/url-service.js:237

### update

- update(read: any): void

  #### Parameters

  - read: any

  #### Returns void

  - Defined in src/router/url/url-service.js:330

### url

- url(newUrl?: string, replace?: boolean, state?: any): string | Location

  Gets the current url, or updates the url

  ### Getting the current URL

  When no arguments are passed, returns the current URL. The URL is normalized using the internal [[path]]/[[search]]/[[hash]] values.

  For example, the URL may be stored in the hash ([[HashLocationServices]]) or have a base HREF prepended ([[PushStateLocationServices]]).

  The raw URL in the browser might be:

      http://mysite.com/somepath/index.html#/internal/path/123?param1=foo#anchor

  or

      http://mysite.com/basepath/internal/path/123?param1=foo#anchor

  then this method returns:

      /internal/path/123?param1=foo#anchor

  #### Example:

      locationServices.url(); // "/some/path?query=value#anchor"

  ### Updating the URL

  When `newurl` arguments is provided, changes the URL to reflect `newurl`

  #### Example:

      locationServices.url("/some/path?query=value#anchor", true);

  #### Parameters

  - `Optional` newUrl: string

    The new value for the URL. This url should reflect only the new internal [[path]], [[search]], and [[hash]] values. It should not include the protocol, site, port, or base path of an absolute HREF.

  - `Optional` replace: boolean = false

    When true, replaces the current history entry (instead of appending it) with this new url

  - `Optional` state: any

    The history's state object, i.e., pushState (if the LocationServices implementation supports it)

  #### Returns string | Location

  the url (after potentially being processed)

  - Defined in src/router/url/url-service.js:183