2017-02-14 42 views
7

Bir rota için birden çok çözümleme sınıfının nasıl oluşturulduğunu biliyorum ama bir çözümün sonucunu başka bir çözüme nasıl geçireceğimi bilmiyorum.Angular Router ile başka bir çözümün sonucunu iletin

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

bir kitap nesnesi döndürenBookResolve, nasıl BookTitleResolve bu kitabın bir nesne geçirebilirsiniz varsa?

Verilerde başlığı anahtarında görünen bir başlık hizmetim var. Kitabın başlığını kitap nesnesinden oluşturabilmem gerekiyor. Bunun dinamik olması gerekiyor.

+0

sen yani this.route 'dan, 2 çözücüden bileşen yok aynı şekilde 1 çözüldü değeri erişen denediniz. data'? – AngularChef

cevap

2

Aynı bileşen içindeki eş zamanlı olarak çözülen çözümler, ancak ebeveynlerin çocuklardan önce tamamlayacağı özümler, bunu başarmanın en kolay yolu, kitabı çözümlemek amacıyla bir ana yol oluşturmaktır. ebeveyn Bir bileşeni oluşmuyor ve bazı ilave boilerplate rağmen, rota işlevsel olarak aynı hareket etmelidir böylece çocuk boş bir yolunu içerdiğini

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

Not.

Sonra BookTitleResolve uygulanması içeride, üst rotadan alabilirsiniz:

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