Je suis en train de mettre à jour une application sur laquelle je travaille vers la dernière version candidate d'Angular 2. Dans le cadre de ce travail, j'essaie d'utiliser la spécification NgModule et de migrer toutes les parties de mon application vers des modules. Pour l'essentiel, cela s'est très bien passé à l'exception d'un problème de routage.
"@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",
Mon application est construite comme une composition de modules, plusieurs modules étant collés ensemble en tant qu'enfants d'un module parent. Par exemple, j'ai un module d'administration qui se compose d'un module de notifications, d'un module d'utilisateurs et d'un module de téléphonie (par exemple). Les routes vers ces modules devraient ressembler à...
/admin/notifications/my-notifications
/admin/users/new-user
/admin/telephony/whatever
Dans les versions antérieures du routeur, il était facile d'y parvenir en utilisant les "enfants"
export const AdminRoutes: RouterConfig = [
{
path: "Admin",
component: AdminComponent,
Children: [
...UserRoutes,
...TelephonyRoutes,
...NotificationRoutes
]
}
]
Dans un autre fichier, dans le cadre des sous-modules, je définirais également les itinéraires des modules individuels, à savoir
export const UserRoutes: RouterConfig = [
{
path: "users",
component: userComponent,
children: [
{path: "new-user", component: newUserComponent}
]
}
]
Tout cela a très bien fonctionné. Lors de la mise à jour vers les modules, j'ai déplacé tous les éléments dans leurs propres fichiers de routage individuels, de sorte que ces deux fichiers ressemblent maintenant à ceci
const AdminRoutes: Routes = [
{path: "admin", component: AdminComponent}
]
export const adminRouting = RouterModule.forChild(AdminRoutes)
et
const UserRoutes: Routes = [
path: "users",
component: userComponent,
children: [
{path: "new-user", component: newUserComponent}
]
]
export const userRouting = RouterModule.forChild(UserRoutes)
Avec tout cela en place, j'ai un UsersModule qui importe le userRouting, puis un AdminModule qui importe les adminRoutes et le UsersModule. Je pensais que puisque UsersModule est un enfant de AdminModule, le routage fonctionnerait comme avant. Malheureusement, ce n'est pas le cas et je me retrouve avec une route users qui est juste
/users/new-user
au lieu de
/admin/users/new-user
De plus, à cause de cela, le composant nouvel utilisateur n'est pas chargé dans la sortie du routeur de mon composant d'administration, ce qui perturbe le style et la navigation de mon application.
Je n'arrive pas à trouver comment référencer les routes de mon UserModule en tant qu'enfants de mon AdminModule. J'ai essayé de le faire à l'ancienne et j'obtiens des erreurs parce que les routes sont dans deux modules. Évidemment, comme il s'agit d'une nouvelle version, la documentation sur certains de ces cas est un peu limitée.
Toute aide que vous pourriez apporter serait grandement appréciée !