2017-01-17 2 views
0

지연된 모듈로 애플리케이션에서 라우팅을 구성하는 방법을 알아 내려고합니다.지연 모듈을 사용한 Angular2 라우팅

예를 들어 나는 AnimalsModule이라는 게으른 모듈을 가지고 있는데이 모듈이 "/ cats"와 "/ dogs"의 두 경로를 처리하도록합니다.

현재 라우터 api에서 나는 'animals/dogs'및 'animals/cats'와 같은 모든 지연 모듈 경로에 대한 공통 경로를 지정해야합니다.

{ 
    path: "", 
    loadChildren: "animals" 
}, 
{ 
    path: "foo", 
    component: FooComponent 
} 

을하지만 사용자가 "/ foo는"자원에 이동할 때이 경우 AnimalsModule에로드 필요가있을 것입니다 :

{ 
    path: "animals", 
    loadChildren: "animals" 
} 

나는 AnimalsModule 비어 경로를 지정할 수 있습니다.

'animals/cats'및 'animals/dogs'경로를 만들고 미래에 AnimalsModule을 DogsModule과 CatsModule (나도 게으름)로 나눌 수있는 코드를 리팩토링하려면 내 응용 프로그램 경로를 깨야합니다. (동일 병합)

일반적인 경로가없는 지연 모듈로 라우팅을 만드는 방법은 무엇입니까?

+0

하지만 동물원에서 foo route를 작성하는 이유는 무엇입니까? 그렇게한다면, 나는 그것이 동물과 관련이 없다고 생각합니다. 그리고 결국 당신은 그것을 더 잘 분열 시켜서 동물성을 정의하는 것이 더 좋을 것입니다. – micronyks

+0

"foo"는 AnimalsModule과 관련이 없지만이 예제에서는 AnimalsModule이 "foo"경로에 액세스 할 때로드됩니다 – Skyliver

답변

1

라우트에는 matcher 속성 인 see docs이라는 속성이 있습니다. 여기에는 사용자가 직접 라우트 일치 로직을 제공 할 수 있지만 질문의 주석과 같이 실제로 2 개의 라우트를 만들거나 2 개의 모듈로 분리 할 수도 있습니다.).

+0

UrlMatcher [broken] (https://angular.io/docs/ts/)에 대한 문서 인 것 같습니다. latest/api/router/index/UrlMatcher) 다른 문서를 찾을 수 있습니다. 나는 라우팅을 위해서만 별도의 모듈을 생각한다. 좋은 생각은 아니다. 모듈은 대개 별도의 애플리케이션 기능을 나타내며 라우팅과 명확한 관계가 없습니다. – Skyliver

+0

소스 코드의 'UrlMatcher'문서에 대한 진실의 소스는 다음과 같습니다. https://github.com/angular/angular/blob/master/modules/% 40angular/router/src/config.ts # L272 – Meligy

+0

시도했지만 설명 된 문제에 대해 matcher를 구현할 수 없습니다. 또한 내 lazy 모듈 경로에 대한 defaultUrlMatcher 구현을 복사하려고하는데 동일한 동작을받지 못합니다. 게으른 모듈 라우트는 각도 라우터의 특별한 경우입니다. – Skyliver