Quelle est la différence entre ActivatedRoute et ActivatedRouteSnapshot en Angular4

Quelle est la différence entre ActivatedRouteSnapshot et ActivatedRoute en angle 4? Je crois comprendre que ActivatedRouteSnapshot est un enfant de ActivatedRoute , ce qui signifie que ActivatedRoute contient ActivatedRouteSnapshot .

soit dit en passant, J'ai essayé D'exécuter une recherche Google pour une réponse à cette question, mais je n'ai trouvé aucun des résultats de recherche pour être compréhensible.

Merci!

26
demandé sur user2245766 2017-09-05 11:54:23

1 réponses

depuis ActivatedRoute peut être réutilisé , ActivatedRouteSnapshot est un objet immuable représentant une version particulière de ActivatedRoute . Il expose toutes les mêmes propriétés que ActivatedRoute comme valeurs simples, tandis que ActivatedRoute les expose comme observables.

voici le commentaire dans la mise en œuvre:

export class ActivatedRoute {
  /** The current snapshot of this route */
  snapshot: ActivatedRouteSnapshot;

si un routeur réutilise un composant et ne crée pas de nouveau activé route, vous aurez deux versions de ActivatedRouteSnapshot pour le même ActivatedRoute . Supposons que vous ayez la configuration de routage suivante:

path: /segment1/:id,
component: AComponent

maintenant vous naviguez vers:

/segment1/1

Vous aurez le param dans le activatedRoute.snapshot.params.id comme 1 .

maintenant vous naviguez vers:

/segment1/2

Vous aurez le param dans le activatedRoute.snapshot.params.id comme 2 .

You peut le voir en mettant en œuvre ce qui suit:

export class AComponent {
  constructor(r: ActivatedRoute) {    
    r.url.subscribe((u) => {
      console.log(r.snapshot.params.id);
    });
38
répondu Max Wizard K 2018-01-12 09:11:06