>

현재 Angular2의 응용 프로그램 중 하나를 작업 중입니다. 다른 하위 기능 모듈이 포함 된 3 개의 기능 모듈이 있습니다. 기능 1의 하위 기능 모듈을 기능 2의 하위 기능 모듈에로드하거나 그 반대로로드하려고합니다. 아래는 샘플 코드입니다.

action-routing.module.ts

const routes: Routes = [
    {
        path: '',
        component: ActionComponent,
        children: [
          {
           path: ':id',
           loadChildren: 'app/action/action-detail/action-detail.module#ActionDetailModule'
          }
        ]
     }
];

action-detail-routing.module.ts

const routes: Routes = [
    {
        path: '',
        component: ActionDetailComponent,
    },    
    {
        path: 'topic-detail/:id',
        loadChildren: 'app/topic/decision-topic-detail/decision-topic-detail.module#DecisionTopicDetailModule',
    }
]

topic-routing.module.ts

const routes: Routes = [
    {
        path: '',
        component: TopicComponent,
        children: [
          {
           path: ':id',
           loadChildren: 'app/topic/decision-topic-detail/decision-topic-detail.module#DecisionTopicDetailModule'
          }
        ]
     }
];

decision-topic-detail-routing.module.ts

const routes: Routes = [
    {
        path: '',
        component: DecisionTopicDetailComponent,
    },    
    {
        path: 'action-detail/:id',
        loadChildren: 'app/action/action-detail/action-detail.module#ActionDetailModule'
    }
]

이것은 주기적 종속성을 생성하고 컴파일 타임에최대 호출 스택 크기 초과 오류오류를 발생시킵니다.

이 오류를 해결할 방법이 있습니까? 한 가지 방법은 전체 기능 모듈을 자체로드하는 것이지만 실행 가능한 상황은 아닙니다.

미리 감사합니다.


  • 답변 # 1

    경로는 구성 요소와 분리되어 있고 해당 구성 요소가 선언 된 모듈 외부에 있어야합니다.

    오랫동안, 당신도 사용하고있는 패턴을 따랐습니다. 와이즈 비즈   topic-routing.module.ts 와 함께 사는 것처럼보여  구성 요소. 하지만 최근에는 다른 시각으로 생각하기 시작했으며 여기에있는 수수께끼가이를 완벽하게 강조합니다.

    와이즈 비즈에 대한 생각을 시작했다  주어진 응용 프로그램의 핵심으로. 이 패러다임 전환은 두 번째 응용 프로그램 작성을 시작했을 때 발생했으며 첫 번째 응용 프로그램에서 작성한 많은 구성 요소/모듈을 재사용하기로 결정했습니다. 재사용이 불가능한 유일한 경로는 경로라는 것을 알았습니다.

    라우트가 "앱"을 정의한 것과 같았고 모듈/컴포넌트는 주어진 응용 프로그램에서 사용할 빌딩 블록입니다.

    그 빛에서, 나는 다음을 추천 할 것이다 :

    라우트 정의를 각 모듈에서 최상위 앱으로 옮기십시오. app.routes 옆의 디렉토리에있을 수 있으며 현재 파일에 분산 상태로 유지하거나 파일이 많지 않은 경우 동일한 파일로 병합 할 수 있습니다.

    반 직관적으로 보일 수 있으며 모든 topic 에서 "수직"그룹화를 잃게됩니다.  주제와 모든 routes 와 함께 생활  물건은 행동으로 산다. 그러나 경로를 참조하는 구성 요소와 근본적으로 다른 동물로 간주하면 덜 고통스럽고 확실히 문제를 해결합니다.

    topic
    
    
    action

관련 자료

  • 이전 bash - 터미널을 열 때마다 다시 작성해야합니다 - source ~/bashrc
  • 다음 html - 회색조 이중 호버 효과