我很惊讶没有确切的答案:
Root / forChild的方法是什么?
例如在RouterModule中:
Router.forRoot(routes)
创建一个包含所有路由器提供程序和指令的模块。它还可以选择设置应用程序侦听器以执行初始导航。
创建一个包含所有路由器指令和提供者注册路由的模块。
第一个通常用于为Angular应用程序创建初始配置并注册“基本”路由,而第二个通常用于配置“相对”路由。
假设我们有一个带有以下路线的应用:
您可以使用上面提到的方法:
app-routing.module.ts(这是一个“真正的”应用程序,路线不同)
基地路线user/
和company/
使用RouterModule#forRoot
注册的地方
//...
const routes: Routes = [
{
path: 'user', loadChildren: './user/user.module#userModule'
},
{ path: 'company', loadChildren: './company/company.module#CompanyModule'},
{ path: '**', loadChildren: './page-not-found/page-not-found.module#PageNotFoundModule'}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
//...
user-routing.module.ts(这是一个“真正的”应用程序,路线不同)
和user/
和company/
的相关路线使用RouterModule#forChild
注册
//...
const routes: Routes = [
{ path: 'list', component: UserComponent},
{ path: 'delete/:id', component: UserDeleteComponent},
{ path: 'register/:id', component: UserRegisterComponent},
];
@NgModule({
imports: [ RouterModule.forChild(routes) ],
exports: [ RouterModule ]
})
//...
公司的儿童路线也是如此。
创建一个包含所有路由器提供程序和指令的模块。它还可以选择设置应用程序侦听器以执行初始导航。
创建一个包含所有路由器指令和提供者注册路由的模块。
仅对具有将要导入到eager和lazy模块模块的提供程序的共享模块使用forRoot / forChild约定
这个是一个很好的答案qazxsw poi可以提供有关此主题的额外信息
使用说明
RouterModule可以多次导入:每个延迟加载一次。由于路由器处理全局共享资源 - 位置,因此我们不能激活多个路由器服务。
这就是为什么有两种方法来创建模块:
1. RouterModule.forRoot - forRoot创建一个包含所有指令,给定路由和路由器服务本身的模块。
2. RouterModule.forChild - forChild创建一个包含所有指令和给定路由的模块,但不包括路由器服务。