2017-10-19 3 views
0

Je sais que CanActivate appelle avant Resolver. J'ai un scénario basé sur un jeton (dynamique depuis l'URL) que je dois router vers trois pages différentes. Quelle est la meilleure approche? Dois-je utiliser canActivate et obtenir les données du service en fonction du jeton et de l'itinéraire? Ou je devrais utiliser le service Resolver pour obtenir les données basées sur le jeton et la route vers le composant?Essayer de comprendre la différence entre canActivate et Resolver

Répondre

0

Le résolveur est vraiment configuré pour être utilisé pour récupérer des données. Il ajoute automatiquement les données à un ensemble de données [] que vous pouvez accéder à partir du composant mis en déroute pour obtenir ces données:

ngOnInit(): void { 
    this.movie = this.route.snapshot.data['movie']; 
} 

canActivate ne le fait pas et on entend plus pour la logique exécutée avant d'activer une route .. . par exemple vérifier si l'utilisateur est connecté.

+0

Merci pour votre réponse. Je n'ai pas assez de réputations pour choisir la réponse. –

+0

Il y a parfois un délai avant qu'il ne permette la sélection d'une réponse. Mais cela devrait vous permettre de choisir une réponse à votre propre question. – DeborahK

1

CanActivate est un agent de routeur qui est exécuté pour vérifier si le routeur doit accéder à la route et la résolveur est un fournisseur de données, que les données de récupération pour la composant avant que le routeur commence la navigation. Donc, parce que vous essayez d'aller chercher des données, vous devez utiliser un résolveur et non un garde.