📢 Je vous présente le livre Angular

  • 1) Il offre un contenu clair et concis, tout en couvrant une multitude de concepts d'Angular.
  • 2) Le livre est structurĂ© en trois niveaux : dĂ©butant, intermĂ©diaire et avancĂ©
  • 3) traite des pratiques les plus rĂ©centes d'Angular, comme les signaux, les vues diffĂ©rĂ©es, la gestion des flux, entre autres
  • 4) De plus, vous y trouverez plusieurs liens vers des exemples de code source pour approfondir vos connaissances en pratique.
Consulter un extrait

Skip to content

Des routes enfants ​

Appelé aussi "routes imbriqués", les routes enfants permettent de mettre une navigation dans une vue.

Par exemple :

http://localhost/users/1337/profile

Affichera un composant Profile pour le profil de l'utilisateur

http://localhost/users/1337/roles

Affichera un composant Roles pour les différents rôles de l'utilisateur Cela peut s'apparenter à un menu avec des boutons changeant une page.

Nous pouvons donc créer un fichier user.router.ts que nous plaçons dans le dossier user. Notre structure est la suivante :

<root>
  user  
    user.component.ts
    user.module.ts
    user-profile.component.ts
    user-role.component.ts
    user.router.ts
  app.router.ts
  app.component.ts
  app.module.ts

Le fichier user.router.ts a ce code :

js
import {RouterModule, Routes} from '@angular/router';
import {UserComponent} from './user.component';
import {UserProfileComponent} from './user-profile.component';
import {UserRoleComponent} from './user-role.component';

const routes:Routes = [
  {
    path: 'users/:id',
    component:  UserComponent,
    children: [
          {
            path: 'profile',
            component: UserProfileComponent
          },
          {
            path: 'roles',
            component: UserRoleComponent
          }
      ]
  },
];

export const UserRouting = RouterModule.forChild(routes);

Le code est très ressemblant. Notez juste que nous avons la propriété children qui définit les différents composants pour le routeur enfant. Nous configurons le module avec forChild()

Ajouter au module ​

Comme pour le routeur parent, nous ajoutons aux modules racines (app.module.ts) :

js
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {UserModule} from './user/user.module';
import {AppComponent} from './app.component';
import {routing} from './app.router';
import {UserRouting} from './user/user.router';

@NgModule({
  imports: [BrowserModule, UserModule, routing, UserRouting],
  declarations: [AppComponent],
  bootstrap: [AppComponent]
})
export class AppModule {

}

Router-Outlet ​

Le premier <router-outlet> se trouve dans AppComponent comme d'habitude. Le deuxième se trouve UserComponent.

js
import {Component, OnInit} from '@angular/core';
import {ActivatedRoute} from '@angular/router';

@Component({
  selector: 'other',
  template: `
    Utilisateur {{id}}
    <router-outlet></router-outlet>
  `
})
export class OtherComponent implements OnInit {

  id:number;

  constructor(private route: ActivatedRoute) { }

  ngOnInit() {
    this.route.params.subscribe(params => this.id = +params.id);
  }

}

Encore une chose à penser ​

Ici, nous avons un module nommé user.module.ts. Ce module intègre les 3 composants (UserComponent, UserProfileComponent et UserRoleComponent). Cependant, dans UserComponent ci-dessous, nous utilisons les directives du routeur. Pour que Angular puisse les utiliser, il faut importer le module routeur dans le module UserModule :

js
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';

import {UserComponent} from './user.component';
import {UserProfileComponent} from './user-profile.component';
import {UserRoleComponent} from './user-role.component';

import {UserRouting} from './user/user.router';

@NgModule({
  imports: [BrowserModule, UserRouting],
  declarations: [UserComponent, UserProfileComponent, UserRoleComponent],
  exports: [UserComponent]
})
export class UserModule {

}

Chaque mois, recevez en avant-première notre newsletter avec les dernières actualités, tutoriels, astuces et ressources Angular directement par email !