Angular fournit un routeur qui va nous permettre de définir ... des routes !

Configuration des routes

En général, les routes sont définies dans un fichier app.routes.ts à la racine de l'application :

import { Routes } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { CardsComponent } from './cards/cards.component';

export const routes: Routes = [
  { path: '', component: HomeComponent },
  { path: 'cards', component: CardsComponent }
];

Importation des routes pour toute l'application

Le fichier app.config.ts va nous permettre d'importer les routes :

import { ApplicationConfig } from '@angular/core';
import { provideHttpClient } from '@angular/common/http';
import { provideRouter } from '@angular/router';
import { routes } from './app.routes';

export const appConfig: ApplicationConfig = {
  providers: [provideHttpClient(), provideRouter(routes)]
};

Importation des routes pour le composant app

Dans le fichier app.components.ts, il va falloir importer "RouterOutlet" qui est une directive permettant de spécifier où vont s'afficher les composants qui correspondent à des routes : 

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

import { MenuComponent } from './menu/menu.component';
import { RacesComponent } from './cards/cards.component';

@Component({
  selector: 'co-root',
  standalone: true,
  imports: [MenuComponent, CardsComponent, RouterOutlet],
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'Cards';
}

Utilisation de RouterOutlet dans le template du composant app

<router-outlet> va nous permettre de spécifier dans quelle partie du template devront s'afficher les composants qui correpondent à la route demandée.

<co-menu></co-menu>
<main class="container">
  <router-outlet></router-outlet>
</main>

Ajout de liens avec  RouterLink

Pour utiliser un lien qui enverra sur une route, il vous faut :

  1. importer RouterLink dans le component concerné (menu par exemple)
    import { RouterLink } from '@angular/router';
    ...
    @Component({
     ...
      imports: [RouterLink]
    })
    
  2. utiliser la directive routerLink dans vos liens :
    <a class="nav-link" routerLink="/races">Races</a>