2016-12-05 5 views
5

내 응용 프로그램은 각도 2 (각진 cli) 및 일부 CMS를 기반으로합니다. 일부 페이지 조각은 CMS에서 다운로드되어 각도 2 페이지에 표시됩니다. 주요 문제는 머리글과 바닥 글이 CMS에서 가져온 것입니다. 그래서 글로벌 결정자를 추가하는 방법이 궁금합니다 (글로벌은 매우 중요합니다. 응용 프로그램의 모든 경로 경로에 대해 리졸버를 추가하고 싶지 않습니다). CMS가 머리글과 바닥 글을 반환 할 때까지 각도를 기다리십시오. 난 이미 성공적으로 라우팅 인터페이스각보기의 각도 2 해결 자

export class InboxResolver implements Resolve<MessageListItem[]> 

을 구현하여 일부 노선에서 일부 데이터를 기다리는 해결을 사용하고 난 일부 사용자 지정 경로에 사용하고 있습니다 :

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

을하지만 어떻게 하나의 글로벌 HeaderAndFooterResolver을 정의 할 수 한 곳?

+0

내가 아는 한, 원하는 것을하는 것은 불가능합니다. 한 가지 해결책은 데이터가 이미로드되었는지 여부를 확인하는 기능을 분석기에 추가하는 것입니다.이 방법은 중복 호출을 방지 할 수 있지만 모든 경로에서 여전히 해결자가 필요합니다. – VSO

답변

7

확실하지 무엇을 당신의 질문에 관한 것입니다하지만 당신은 리졸버와 componentless 부모 경로를 사용하고 모든 하위 경로

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

네, 내가 말한 것과 비슷한 것을 시도하고 있습니다. 하지만 상위 경로에는 CMS에서 머리글과 바닥 글을 가져 오는 InboxResolver라는 TemplateResolver를 사용하는 app.template.component 구성 요소가 포함되어 있습니다. 요약하자면, idea atm은 앱 상위 경로를 작성하는 것이므로 모든 다른 경로는 하위 경로 여야합니다. 따라서이 해결자는 모든 경로가 응용 프로그램 템플릿 경로의 자식 경로이므로 – user2771738

+0

예, 모든 경로는이 경로의 하위 경로 여야하거나 각 경로에 리졸버를 추가해야하므로 모든 경로가 응용 프로그램의 모든 경로에 대해 확인됩니다. –

+0

더러워진 것 같지만 더 나은 해결책이 없으며 생각입니다. 어쩌면 비 라우터 가드 솔루션의 일종일까요? – VSO

1

당신은 기본적으로 각 component 하나 resolver 필요 선언 할 필요가 이것을 공유 할 수 있습니다 각 경로마다 한 번씩 부모> 자녀가 아니라면 다음과 같이 리졸버를 공유 할 수 있습니다.

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