# Router Reference
The following sections highlight some core router concepts.
{@a basics-router-imports}
### Router imports
The Angular Router is an optional service that presents a particular component view for a given URL.
It is not part of the Angular core and thus is in its own library package, `@angular/router`.
Import what you need from it as you would from any other Angular package.
For more on browser URL styles, see [`LocationStrategy` and browser URL styles](guide/router#browser-url-styles).
{@a basics-config}
### Configuration
A routed Angular application has one singleton instance of the `Router` service.
When the browser's URL changes, that router looks for a corresponding `Route` from which it can determine the component to display.
A router has no routes until you configure it.
The following example creates five route definitions, configures the router via the `RouterModule.forRoot()` method, and adds the result to the `AppModule`'s `imports` array.
  
    | Property | Description | 
  
    | url | An `Observable` of the route path(s), represented as an array of strings for each part of the route path. | 
  
    | data | An `Observable` that contains the `data` object provided for the route.
    Also contains any resolved values from the [resolve guard](guide/router-tutorial-toh#resolve-guard). | 
  
    | paramMap | An `Observable` that contains a [map](api/router/ParamMap) of the required and [optional parameters](guide/router-tutorial-toh#optional-route-parameters) specific to the route.
    The map supports retrieving single and multiple values from the same parameter. | 
  
    | queryParamMap | An `Observable` that contains a [map](api/router/ParamMap) of the [query parameters](guide/router-tutorial-toh#query-parameters) available to all routes.
    The map supports retrieving single and multiple values from the query parameter. | 
  
    | fragment | An `Observable` of the URL [fragment](guide/router-tutorial-toh#fragment) available to all routes. | 
  
    | outlet | The name of the `RouterOutlet` used to render the route.
    For an unnamed outlet, the outlet name is primary. | 
  
    | routeConfig | The route configuration used for the route that contains the origin path. | 
    
    | parent | The route's parent `ActivatedRoute` when this route is a [child route](guide/router-tutorial-toh#child-routing-component). | 
  
    | firstChild | Contains the first `ActivatedRoute` in the list of this route's child routes. | 
  
    | children | Contains all the [child routes](guide/router-tutorial-toh#child-routing-component) activated under the current route. | 
Two older properties are still available; however, their replacements are preferable as they may be deprecated in a future Angular version.
* `params`: An `Observable` that contains the required and [optional parameters](guide/router-tutorial-toh#optional-route-parameters) specific to the route. Use `paramMap` instead.
* `queryParams`: An `Observable` that contains the [query parameters](guide/router-tutorial-toh#query-parameters) available to all routes.
Use `queryParamMap` instead.
### Router events
During each navigation, the `Router` emits navigation events through the `Router.events` property.
These events range from when the navigation starts and ends to many points in between. The full list of navigation events is displayed in the table below.
  
    | Router Event | Description | 
  
    | NavigationStart | An [event](api/router/NavigationStart) triggered when navigation starts. | 
  
    | RouteConfigLoadStart | An [event](api/router/RouteConfigLoadStart) triggered before the `Router`
      [lazy loads](guide/router-tutorial-toh#asynchronous-routing) a route configuration. | 
  
    | RouteConfigLoadEnd | An [event](api/router/RouteConfigLoadEnd) triggered after a route has been lazy loaded. | 
  
    | RoutesRecognized | An [event](api/router/RoutesRecognized) triggered when the Router parses the URL and the routes are recognized. | 
  
    | GuardsCheckStart | An [event](api/router/GuardsCheckStart) triggered when the Router begins the Guards phase of routing. | 
  
    | ChildActivationStart | An [event](api/router/ChildActivationStart) triggered when the Router begins activating a route's children. | 
  
    | ActivationStart | An [event](api/router/ActivationStart) triggered when the Router begins activating a route. | 
  
    | GuardsCheckEnd | An [event](api/router/GuardsCheckEnd) triggered when the Router finishes the Guards phase of routing successfully. | 
  
    | ResolveStart | An [event](api/router/ResolveStart) triggered when the Router begins the Resolve phase of routing. | 
  
    | ResolveEnd | An [event](api/router/ResolveEnd) triggered when the Router finishes the Resolve phase of routing successfuly. | 
  
    | ChildActivationEnd | An [event](api/router/ChildActivationEnd) triggered when the Router finishes activating a route's children. | 
  
    | ActivationEnd | An [event](api/router/ActivationEnd) triggered when the Router finishes activating a route. | 
  
    | NavigationEnd | An [event](api/router/NavigationEnd) triggered when navigation ends successfully. | 
  
    | NavigationCancel | An [event](api/router/NavigationCancel) triggered when navigation is canceled.
      This can happen when a [Route Guard](guide/router-tutorial-toh#guards) returns false during navigation,
      or redirects by returning a `UrlTree`. | 
  
    | NavigationError | An [event](api/router/NavigationError) triggered when navigation fails due to an unexpected error. | 
  
    | Scroll | An [event](api/router/Scroll) that represents a scrolling event. | 
When you enable the `enableTracing` option, Angular logs these events to the console.
For an example of filtering router navigation events, see the [router section](guide/observables-in-angular#router) of the [Observables in Angular](guide/observables-in-angular) guide.
### Router terminology
Here are the key `Router` terms and their meanings:
  
    | Router Part | Meaning | 
  
    | Router | Displays the application component for the active URL.
      Manages navigation from one component to the next. | 
  
    | RouterModule | A separate NgModule that provides the necessary service providers
      and directives for navigating through application views. | 
  
    | Routes | Defines an array of Routes, each mapping a URL path to a component. | 
  
    | Route | Defines how the router should navigate to a component based on a URL pattern.
      Most routes consist of a path and a component type. | 
  
    | RouterOutlet | The directive ( <router-outlet>) that marks where the router displays a view. | 
  
    | RouterLink | The directive for binding a clickable HTML element to a route. Clicking an element with a routerLinkdirective that is bound to a string or a link parameters array triggers a navigation. | 
  
    | RouterLinkActive | The directive for adding/removing classes from an HTML element when an associated routerLinkcontained on or inside the element becomes active/inactive. | 
  
    | ActivatedRoute | A service that is provided to each route component that contains route specific information such as route parameters, static data, resolve data, global query params, and the global fragment. | 
  
    | RouterState | The current state of the router including a tree of the currently activated routes together with convenience methods for traversing the route tree. | 
  
    | Link parameters array | An array that the router interprets as a routing instruction.
      You can bind that array to a RouterLinkor pass the array as an argument to theRouter.navigatemethod. | 
  
    | Routing component | An Angular component with a RouterOutletthat displays views based on router navigations. |