2017-01-17 6 views
0

Я пытаюсь выяснить, как настроить маршрутизацию в моем приложении с ленивыми загружаемыми модулями.Angular2 routing with lazy modules

Например, у меня есть ленивый модуль под названием AnimalsModule, и я хочу, чтобы этот модуль обрабатывал 2 маршрута «/ cats» и «/ dogs».

В текущем маршрутизаторе api Мне нужно указать общий путь для всех ленивых маршрутов модуля, например: «животные/собаки» и «животные/кошки».

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

Я могу указать пустой путь для AnimalsModule:

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

Но в этом случае AnimalsModule будет ненужным загружен, когда пользователь переходит на "/ Foo" ресурс.

Если я создаю маршруты «животные/кошки» и «животные/собаки», и в будущем я хочу реорганизовать свой код, чтобы разделить AnimalsModule на DogsModule и CatsModule (также ленивый), мне придется разорвать маршруты моих приложений. (то же самое для слияния)

Как создать маршрутизацию с ленивым модулем без общего пути?

+0

Но почему вы просто не пишете маршрут foo из животного мира? Если вы это сделаете, я не думаю, что это имеет какое-либо отношение к animalmodule. И в конце вы хотите разбить его так лучше, чтобы определить его на уровне животного мира. – micronyks

+0

«foo» не имеет никакого отношения к AnimalsModule, но в этом примере AnimalsModule будет загружаться при доступе к маршруту «foo» – Skyliver

ответ

1

Маршруты имеют свойство matcher property see docs, где вы можете указать свою логику соответствия маршрутов, но, как в комментарии к вопросу, я бы действительно создал два маршрута или даже разделить их на 2 модуля (более вероятно).

+0

Кажется, что документы для UrlMatcher [broken] (https://angular.io/docs/ts/ last/api/router/index/UrlMatcher), и я могу найти любую другую документацию. Я думаю, что отдельный модуль только для маршрутизации - не очень хорошая идея. Модуль обычно представляет собой отдельную функцию приложения, и нет однозначных отношений с маршрутизацией. – Skyliver

+0

Вот источник правды для документации 'UrlMatcher', из исходного кода: https://github.com/angular/angular/blob/master/modules/% 40angular/router/src/config.ts # L272 – Meligy

+0

Я пытаюсь, но я не могу реализовать совпадение для описанной проблемы. Также я пытаюсь скопировать реализацию defaultUrlMatcher для своего ленивого модульного маршрута, и я не получаю такого же поведения. Я думаю, что этот ленивый модуль маршрутов - это особый случай для углового маршрутизатора. – Skyliver