2017-09-05 35 views
13

Jaka jest różnica między ActivatedRouteSnapshot i ActivatedRoute w Angular 4? Rozumiem, że ActivatedRouteSnapshot jest dzieckiem o numerze ActivatedRoute, co oznacza, że ​​ActivatedRoute zawiera ActivatedRouteSnapshot.Jaka jest różnica między ActivatedRoute i ActivatedRouteSnapshot w Angular4

Nawiasem mówiąc, próbowałem uruchomić wyszukiwanie w Google w celu uzyskania odpowiedzi na to pytanie, ale nie znalazłem żadnego z wyników wyszukiwania, aby było zrozumiałe.

Dziękujemy!

Odpowiedz

21

Od ActivatedRoutecan be reused, ActivatedRouteSnapshot jest niezmienna obiekt reprezentujący konkretnej wersji z ActivatedRoute. Eksponuje wszystkie te same właściwości co ActivatedRoute jako wartości zwykłe, podczas gdy ActivatedRoute udostępnia je jako obiekty obserwowalne.

Oto komentarz w realizacji:

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

Jeżeli router ponownie wykorzystuje komponent i nie tworzy nowej trasy włączona, będziesz mieć dwie wersje ActivatedRouteSnapshot dla tego samego ActivatedRoute. Załóżmy, że mamy następującą konfigurację routingu:

path: /segment1/:id, 
component: AComponent 

Teraz przejdź do:

/segment1/1 

Będziesz miał param w activatedRoute.snapshot.params.id jak 1.

Teraz przejdź do:

/segment1/2 

Będziesz miał param w activatedRoute.snapshot.params.id jak 2.

Widać to poprzez wdrożenie następujące:

export class AComponent { 
    constructor(r: ActivatedRoute) {  
    r.url.subscribe((u) => { 
     console.log(r.snapshot.params.id); 
    });