2016-09-22 5 views
4

Angular2 공식 페이지의 Tour-of-Hero 자습서를 따라했습니다. 그러나 모듈 지연로드 (lazy-loading)를 도입하여 한 걸음 더 나아갔습니다.게으른로드 된 모듈에서 느린 지연 모듈로 구성 요소 가져 오기

I했습니다있어 다음과 같은 기능 모듈 :

  • 모듈 Dashboard

    • 대시 보드 구성 요소
  • 모듈 Hero

      ,
    • 영웅 목록 구성 요소
    • 영웅 상세 구성 요소
    • 영웅 검색 구성 요소
    • 영웅 검색 서비스
    • 영웅 모델

영웅 검색 구성 요소 인 지시문은 대시 보드 모듈에서 사용해야합니다.

그러나 Angular2 아키텍처에 관한 this documentation에 따르면 라우팅 된 모듈 은 다른 사람이을 가져 오지 않아야합니다. 즉, 영웅 모듈을 대시 보드 모듈로 가져 오면 안됩니다. 내가하면 루트가 더 이상 작동하지 않습니다.

또한 영웅 - 검색 구성 요소는 영웅 서비스영웅 모델, 그래서 그것은 하드 외부화 할 수있게, 영웅 모듈에 강한 종속성이를 사용합니다.

그러면 대시 보드 구성 요소에서 영웅 검색 구성 요소를 어떻게 사용해야합니까?

+0

Sam, 이미이 문제에 대한 해결책을 찾았습니까? 나는 똑같은 문제로 어려움을 겪고있다. – Nico

+0

아니, 나는 이것에 대한 올바른 접근법이 무엇인지 전혀 모른다. ngModule에 관한 John Papa의 튜토리얼을 기대하고 있습니다. – Sam

답변

2

는 당신의 거기에서 UtilityModule, 수출 HeroSearch를 호출 한 후 DashboardModuleHeroModuleUtilityModule을 가져 보자, 세 번째 모듈을 만들 수 있습니다. 이렇게하면 두 모듈 모두에서 HeroSearch 구성 요소를 사용할 수 있습니다.

@NgModule({ 
    imports: [ ... ], 
    declarations: [ ... ], 
    exports: [ HeroSearch ] 
}) 

export class UtilityModule { } 
+0

스테판, 저것을 생각했지만, HeroSearchComponent는 HeroSearchService와 Hero 모델에 강한 의존성을 가지고 있습니다. 그에 따라 내 게시물을 업데이트했습니다. 이것은 SharedModule (또는 UtiltyModule)에 넣는 것을 어렵게한다. – Sam

+0

@Sam'HeroSearch'에 필요한 모든 의존성을'UtilityModule'으로 옮기지 않으시겠습니까? –

+0

영웅 모델이나 히어로 서비스가 실제로 공유 모듈이 아닌 영웅 모듈에 있어야하기 때문입니다. 제 생각에 근본적인 질문이므로이 문제는 튜토리얼의 앵귤러 팀에서 다루지 않았기 때문에 놀랍습니다. 게으른로드 된 모듈의 특정 구성 요소 만 다른 모듈로 가져와야하는 경우가 많이 있습니다. – Sam

0

나는 그렇게 할 수 없다는 것을 알고 있습니다. 지연 연결 모듈은 독립적 인 앱처럼 작동합니다. 그래서 거기에 선언 된 것은 그 모듈의 범위 안에서만 사용해야합니다. 그것에 대해 생각 해봐. 대시 보드를로드 할 때 게으른 영웅 모듈이 아직로드되지 않았다는 것을 확신 할 수 없습니다. 그렇다면 아직로드되지 않은 모듈의 어떤 것을 어떻게 사용하고 싶습니까?

어쩌면 틀 렸지만 성공하지 못한 채 문서에 표시 한 것보다 더 복잡한 모듈 구조를 설계하려고합니다. 나는이 모듈 시스템이 나쁜 러시 디자인의 한 예라고 생각한다. 행운을 빈다.

관련 문제