2017-02-14 30 views
7

Wiem, jak utworzyć wiele klas rozstrzygnięć dla trasy, ale nie wiem, jak przekazać wynik jednego rozwiązania do innego rozwiązania.Przełóż wynik jednego rozwiązania na drugie z użyciem routera kątowego

// Example Route 
{ 
    path: 'book/:id', 
    component: BookComponent, 
    resolve: { 
    document: BookResolve, 
    title: BookTitleResolve 
    } 
} 

Jeśli BookResolve zwraca obiekt książce, w jaki sposób można przekazać tej książce obiektu do BookTitleResolve?

Mam usługę tytułów, która szuka klucza title w danych. Muszę być w stanie wygenerować tytuł książki z obiektu książki. To musi być dynamiczne.

+0

Próbowałeś dostępu do rozwiązany wartość 1. z 2. rezolwerem ten sam sposób, w jaki składnik robi, czyli od 'this.route. dane "? – AngularChef

Odpowiedz

2

Rozwiązuje w tym samym uruchomieniu komponentu jednocześnie, ale rozwiązuje się w rodzicach ukończy przed dziećmi, więc najprostszym sposobem, aby to osiągnąć, jest utworzenie trasy nadrzędnej w celu rozwiązania książki.

{ 
    path: 'book/:id', 
    resolve: { 
    document: BookResolve 
    }, 
    children: [ { 
    path: '', 
    component: BookComponent, 
    resolve: { 
     title: BookTitleResolve 
    } 
    } ] 
} 

Należy pamiętać, że rodzic nie czyni komponent i dziecko zawiera pustą ścieżkę tak pomimo pewnego dodanej boilerplate, trasa powinna działać tak samo funkcjonalnie.

Następnie wewnątrz implementacji BookTitleResolve można pobrać z trasy dominującej:

class BookTitleResolve { 
    resolve(route: ActivatedRouteSnapshot) { 
     // Do something with route.parent.data.document 
    } 
}