2016-12-05 30 views
5

Dolayısıyla, uygulamam açısal 2 (açısal uç) ve bazı CMS'ye dayanıyor. Bazı sayfa parçaları CMS'den indirilir ve açısal 2 sayfada görüntülenir. Ana sorun, üstbilgi ve altbilginin CMS'den olmasıdır. Küresel çözümleyiciyi nasıl ekleyeceğimi merak ediyorum (global çok önemli, uygulamadaki her yol için çözümleyici eklemek istemiyorum), bu da CMS'nin üstbilgi ve altbilgi döndürmesini beklemek için açısal olarak zorlayacak. Zaten başarıyla rota arayüzünüHer görünüm için açısal 2 çözümleyici

export class InboxResolver implements Resolve<MessageListItem[]> 

uygulayarak bazı yolları üzerinde bazı veriler için beklenecek çözümleyicinizi kullanıyorum ve bazı özel yolları bunu kullanıyorum:

const MessagesRoutes: Routes = [ 
{ 
    path: 'inbox', 
    component: InboxComponent, 
    resolve: { messages: InboxResolver } 
} 
]; 

Ama nasıl bir küresel HeaderAndFooterResolver tanımlamak için bir yer?

+0

gibi bildiğim kadarıyla, ne soruyorsun mümkün değildir yapıyor. Çözümlerden biri çözümleyiciye, verilerin zaten yüklü olup olmadığını kontrol eden bir işlev eklemektir - bu en azından yinelenen çağrıları engeller, yine de her rotada bir çözümleyiciye ihtiyacınız olacaktır. – VSO

cevap

7

emin değil ne soru hakkında ama bir resolverli bir componentless ana güzergah kullanmak ve tüm alt yolları

const MessagesRoutes: Routes = [ 
    { path: '', resolve: { messages: InboxResolver }, children: [ 
     { path: 'inbox', component: InboxComponent}, 
     { path: 'xxx', component: XxxComponent}, 
     { path: 'zzz', component: XxxComponent}, 
    ]} 
]; 
+0

Yup, dediğim gibi benzer bir şey deniyorum. Ancak ana yol, CMS'den üstbilgi ve altbilgiyi getiren TemplateResolver aka inboxResolver öğesini kullanan application app.template.component bileşenini içerir. Özetle, fikir atm, uygulama ana yolunu oluşturmaktır, bu yüzden diğer her yolun çocuğu olması gerekir. Yani bu çözümleyici uygulamadaki her rota için çözümleyici olacaktır, çünkü her rota, uygulama şablonu rotası – user2771738

+0

'un çocuk rotasıdır. Evet, her rotanın bu rotanın bir alt rotası olması gerekir, ya da her rotayı çözümleyiciye eklersiniz. –

+0

Kirli görünüyor, ama daha iyi bir çözüm yok ve bu bir fikir. Belki bir çeşit yönlendirici olmayan güvenlik çözümü? – VSO

1

Temelde her component için bir resolver ihtiyaç ve beyan edilmesi gereken bu paylaşabilir bir kere her güzergah için, bunlar üst> çocuk olmadığı sürece, aşağıdaki gibi aralarında çözümleyicinizi paylaşabilirsiniz:

const MessagesRoutes: Routes = [ 
    { path: '', resolve: { messages: EmailResolver }, children: [ 
    { path: 'inbox', component: InboxComponent }, 
    { path: 'outbox', component: OutboxComponent }, 
    { path: 'sent', component: SentComponent }, 
    { path: 'received', component: ReceivedComponent } 
    ]} 
];