В процессе обновления приложения я работаю с последним кандидатом на выпуск Angular 2. В рамках этой работы я пытаюсь использовать спецификацию NgModule и переносить все части своего приложения на модули. По большей части это прошло очень хорошо, за исключением проблемы с маршрутизацией.
"@angular/common": "2.0.0-rc.5",
"@angular/compiler": "2.0.0-rc.5",
"@angular/core": "2.0.0-rc.5",
"@angular/forms": "0.3.0",
"@angular/http": "2.0.0-rc.5",
"@angular/platform-browser": "2.0.0-rc.5",
"@angular/platform-browser-dynamic": "2.0.0-rc.5",
"@angular/router": "3.0.0-rc.1",
Мое приложение построено как состав модулей, при этом несколько модулей склеиваются как дочерние элементы родительского модуля. Например, у меня есть модуль администратора, который состоит из модуля уведомлений, модуля пользователей и телефонного модуля (например). Маршруты к этим модулям должны выглядеть как...
/admin/notifications/my-notifications
/admin/users/new-user
/admin/telephony/whatever
В более ранней версии маршрутизатора это было легко выполнить с помощью "children"
export const AdminRoutes: RouterConfig = [
{
path: "Admin",
component: AdminComponent,
Children: [
...UserRoutes,
...TelephonyRoutes,
...NotificationRoutes
]
}
]
В другом файле, как части подмодулей, я бы определил маршруты отдельных модулей, а также i.e.
export const UserRoutes: RouterConfig = [
{
path: "users",
component: userComponent,
children: [
{path: "new-user", component: newUserComponent}
]
}
]
Все это работало очень хорошо. В процессе обновления до модулей я переместил все в свои собственные файлы маршрутизации, а теперь эти два больше похожи на это.
const AdminRoutes: Routes = [
{path: "admin", component: AdminComponent}
]
export const adminRouting = RouterModule.forChild(AdminRoutes)
и
const UserRoutes: Routes = [
path: "users",
component: userComponent,
children: [
{path: "new-user", component: newUserComponent}
]
]
export const userRouting = RouterModule.forChild(UserRoutes)
Со всем этим на месте у меня есть UserModule, который импортирует userRouting, а затем AdminModule, который импортирует adminRoutes и UserModule. Я думал, что поскольку UserModule является дочерним элементом AdminModule, маршрутизация будет работать так, как она привыкла. К сожалению, это не так, я в конечном итоге с маршрутом пользователей, который просто
/users/new-user
вместо
/admin/users/new-user
Кроме того, из-за этого компонент нового пользователя не загружается в розетку маршрутизатора моего админ-компонента, который отменяет стиль и навигацию моего приложения.
Я не могу на всю жизнь придумать, как ссылаться на маршруты моего UserModule в качестве дочерних элементов моего AdminModule. Я попытался сделать это по-старому и получить ошибки о маршрутах, находящихся в двух модулях. Очевидно, так как это недавно выпущено, документация по некоторым из этих случаев немного ограничена.
Любая помощь, которую любой может предоставить, будет с благодарностью!