Open In App

Explain the purpose of Router services in Angular.

The Router service in Angular is an important component that enables navigation within our single-page application (SPA). It involves mapping URLs to different components or views within the application and rendering the appropriate content based on the requested URL. When a user interacts with navigation links or changes the URL in the browser address bar, the Router intercepts these actions and dynamically updates the view displayed in the browser.

Prerequisites

What is Router Service?

The Router service is a powerful feature that enables navigation and routing between different components and views in a single-page-application (SPA). It allows us to handle and define navigation paths, and handle route parameters.

The Router service provides a comprehensive API for:

Syntax:

Routes definition

import { Routes } from '@angular/router';
const routes: Routes = [
  { path: 'about', component: AboutComponent },  // Simple route
  { path: 'products/:id', component: ProductDetailComponent }, // Dynamic route with params
  { path: '**', component: NotFoundComponent }  // Default route for unmatched paths
];

Router Configuration:

import { RouterModule } from '@angular/router';

@NgModule({
    imports: [
        RouterModule.forRoot(appRoutes) // Application-wide routing configuration
    ],
    // ...
})
export class AppModule { }

In this way we can define and configure routes, and now we can directly use routerLink to navigate between components.

Features

Here are some key features of the Router service:

Purpose of Router services

The primary purpose of the routing service in Angular is to:

Steps to create Angular application

Step 1: Create the angular project using the following command.

ng new project

Folder Structure:

project

Dependencies:

"dependencies": {
    "@angular/animations": "^17.3.0",
    "@angular/common": "^17.3.0",
    "@angular/compiler": "^17.3.0",
    "@angular/core": "^17.3.0",
    "@angular/forms": "^17.3.0",
    "@angular/platform-browser": "^17.3.0",
    "@angular/platform-browser-dynamic": "^17.3.0",
    "@angular/platform-server": "^17.3.0",
    "@angular/router": "^17.3.0",
    "@angular/ssr": "^17.3.0",
    "rxjs": "~7.8.0",
    "tslib": "^2.3.0",
    "zone.js": "~0.14.3"
},
"devDependencies": {
    "@angular-devkit/build-angular": "^17.3.0",
    "@angular/cli": "^17.3.0",
    "@angular/compiler-cli": "^17.3.0",
    "@types/express": "^4.17.17",
    "@types/jasmine": "~5.1.0",
    "@types/node": "^18.18.0",
    "jasmine-core": "~5.1.0",
    "karma": "~6.4.0",
    "karma-chrome-launcher": "~3.2.0",
    "karma-coverage": "~2.2.0",
    "karma-jasmine": "~5.1.0",
    "karma-jasmine-html-reporter": "~2.1.0",
    "typescript": "~5.4.2"
}

Now let us learn how to create routes for our application

Step 2: Let us create home and about components

ng g ccomponent home
ng g component about

Step 3: Implement the Code

<!-- app.component.html -->

<h1>Angular Router Example</h1>
<nav>
    <a routerLink="/home" routerLinkActive="active">Home</a>
    <a routerLink="/about" routerLinkActive="active">About</a>
</nav>
<router-outlet></router-outlet>
<!-- home.component.html -->

<p>home works!</p>
<!-- about.component.html -->

<p>about works!</p>
// app.component.ts

import { Component } from '@angular/core';
import { Router } from '@angular/router';

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.scss'],
})
export class AppComponent {
    constructor(private router: Router) { }

    navigateToHome() {
        this.router.navigate(['/home']);
    }

    navigateToAbout() {
        this.router.navigate(['/about']);
    }
}
//app-routing.module.ts

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { AboutComponent } from './about/about.component';

const routes: Routes = [
    { path: 'home', component: HomeComponent },
    { path: 'about', component: AboutComponent },
    { path: '', redirectTo: '/home', pathMatch: 'full' },
];

@NgModule({
    imports: [RouterModule.forRoot(routes)],
    exports: [RouterModule],
})
export class AppRoutingModule { }

To start the application run the following command.

ng serve

Output:

Router Service example in angular

Article Tags :