我正在将正在开发的应用程序升级到最新的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
在较早的路由器版本中,使用“儿童”可以轻松完成此操作
export const AdminRoutes: RouterConfig = [
{
path: "Admin",
component: AdminComponent,
Children: [
...UserRoutes,
...TelephonyRoutes,
...NotificationRoutes
]
}
]
在另一个文件中,作为子模块的一部分,我还要定义各个模块的路由,即
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)
完成所有这些操作后,我有了一个UsersModule,它可以导入userRouting,然后是一个AdminModule,它可以导入adminRoutes和UsersModule。我的想法是,由于UsersModule是AdminModule的子级,因此路由将按以前的方式工作。不幸的是,事实并非如此,我最终得到的用户路线只是
/users/new-user
代替
/admin/users/new-user
此外,由于这个原因,新用户组件不会加载到我的admin组件的路由器出口中,这会打乱我的应用程序的样式和导航。
我一生都无法提出如何将UserModule的路由作为AdminModule的子级引用。我尝试用旧方法执行此操作,并得到有关两个模块中路由的错误。显然,由于它是新发布的,因此有关某些情况的文档有些局限。
任何人都可以提供的任何帮助将不胜感激!
loadChildren
路由上有一个属性,可以明确提及模块。文档只在延迟加载的情况下谈论它...