Pour créer un gardien pour des modules chargés en différé dans Angular, il est nécessaire d'utiliser un service avec l'interface CanLoad
. Contrairement à l'utilisation de déocorateurs comme @Guard
ou @Module
, ou encore d'observables, c'est bien cette méthode qui est recommandée.
CanLoad est une interface de routage dans Angular qui nous permet de déterminer si un module peut être chargé de manière asynchrone ou non. Elle diffère des autres gardiens de routes Angular, tels que CanActivate et CanDeactivate, en ce sens que CanLoad s'applique uniquement aux routes présentant un chargement différé.
Pour utiliser CanLoad, vous devez d'abord créer un service qui implémente l’interface CanLoad. L'interface CanLoad possède une méthode, canLoad()
, qui renvoie soit un booléen, soit un Observable qui résout un booléen. Angular utilise la valeur retournée par canLoad()
pour déterminer si le chargement d’une route donnée doit être autorisé ou non.
Voici un exemple de code d’un service qui utilise CanLoad:
import { CanLoad, Route } from '@angular/router';
@Injectable({
providedIn: 'root'
})
export class ExampleGuard implements CanLoad {
constructor(private authService: AuthService) {}
canLoad(route: Route): boolean | Observable<boolean> | Promise<boolean> {
return this.authService.isAuthenticated;
}
}
Dans l'exemple ci-dessus, le gardien ExampleGuard
vérifie si l'utilisateur est authentifié avant de permettre le chargement du module concerné. Si la méthode isAuthenticated
renvoie vrai, alors le module sera chargé, sinon, il ne le sera pas.
L'utilisation du service avec l'interface CanLoad est essentielle pour créer un gardien de modules chargé en différé dans Angular, facilitant ainsi la gestion des autorisations au sein des applications Angular. Il s'agit d'une pratique courante et recommandée pour veiller à ce que les modules soient chargés de manière sécurisée et efficace.