Jestem w trakcie ulepszania aplikacji, nad którą pracuję, na najnowszego kandydata do wydania Angular 2. W ramach tej pracy próbuję korzystać ze specyfikacji NgModule i migrować wszystkie części mojej aplikacji do modułów. W większości wypadków wszystko poszło bardzo dobrze, z wyjątkiem problemu z routingiem.Jak przejść do modułu jako dziecko modułu - Angular 2 RC 5
"@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",
Moja aplikacja jest zbudowana jako kompozycja modułów, z kilkoma modułami sklejanymi jako elementy potomne modułu nadrzędnego. Na przykład mam moduł administracyjny, który składa się z modułu powiadomień, modułu użytkowników i modułu telefonicznego (na przykład). Trasy do tych modułów powinno wyglądać ...
/admin/notifications/my-notifications
/admin/users/new-user
/admin/telephony/whatever
We wcześniejszym wydaniu routera, to było łatwe do osiągnięcia za pomocą „dzieci”
export const AdminRoutes: RouterConfig = [
{
path: "Admin",
component: AdminComponent,
Children: [
...UserRoutes,
...TelephonyRoutes,
...NotificationRoutes
]
}
]
w innym pliku, jako część podmoduły, zdefiniowałbym również poszczególne trasy modułów, tj.
export const UserRoutes: RouterConfig = [
{
path: "users",
component: userComponent,
children: [
{path: "new-user", component: newUserComponent}
]
}
]
Wszystko działało bardzo dobrze. W procesie aktualizacji do modułów, przeniosłem wszystko do własnych indywidualnych plików routingu zamiast więc teraz te dwa wyglądają bardziej jak ten
const AdminRoutes: Routes = [
{path: "admin", component: AdminComponent}
]
export const adminRouting = RouterModule.forChild(AdminRoutes)
i
const UserRoutes: Routes = [
path: "users",
component: userComponent,
children: [
{path: "new-user", component: newUserComponent}
]
]
export const userRouting = RouterModule.forChild(UserRoutes)
ze wszystkimi, że w miejscu, muszę moduł Users, który importuje userRouting, a następnie moduł administracyjny, który importuje adminRoutes i moduł UsersModule. Myślałem, że ponieważ UsersModule jest dzieckiem AdminModule, routing działałby tak jak kiedyś. Niestety, nie ma więc skończyć z trasą użytkowników, że jest po prostu
/users/new-user
zamiast
/admin/users/new-user
Ponadto, z tego powodu, komponent nowy użytkownik nie jest ładowany do wylot routera z mojego elementu administratora, który odrzuca styl i nawigację mojej aplikacji.
Nie mogę na całe życie wymyślić, jak odwołać się do tras mojego modułu użytkownika jako dzieci mojego AdminModule. Próbowałem zrobić to w starym stylu i uzyskać błędy dotyczące tras znajdujących się w dwóch modułach. Oczywiście, ponieważ jest to nowe wydanie, dokumentacja dotycząca niektórych z tych przypadków jest nieco ograniczona.
Każda pomoc, którą każdy może zapewnić, byłaby bardzo ceniona!
Istnieje własność 'loadChildren' na trasach, która pozwala wyraźnie wymienić moduł. Dokumenty mówią o tym tylko w kontekście leniwego ładowania ... –
Myślę, że to jest dokument, który powinieneś odnosić się do https://angular.io/guide/ngmodule#lazy-loading-modules-with-the -router – jitenagarwal19
Znalazłem bardzo przydatny [ten artykuł] (https://toddmotto.com/right-component-router) Todda Motto na temat routera Angular. 'loadChildren' również jest bardzo dobrze wyjaśniony. – Hinrich