繁体   English   中英

Angular:forRoot / forChild方法用法?

[英]Angular: forRoot/forChild methods usage?

我很惊讶没有确切的答案

Root / forChild的方法是什么?

例如在RouterModule中:

Router.forRoot(routes)

RouterModule#forRoot

创建一个包含所有路由器提供程序和指令的模块。 它还可以选择设置应用程序侦听器以执行初始导航。

RouterModule#forChild

创建一个包含所有路由器指令和提供者注册路由的模块。

第一个通常用于为Angular应用程序创建初始配置并注册“基本”路由,而第二个通常用于配置“相对”路由。

假设我们有一个带有以下路线的应用:

  1. 用户
    • 寄存器
    • 名单
    • 删除
  2. 公司
    • 寄存器
    • 名单
    • 删除

您可以使用上面提到的方法:

app-routing.module.ts (这是一个“真正的”应用程序,路由不同)

使用RouterModule#forRoot注册基本路由user/company/位置

//...
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 (这是一个“真正的”应用程序,路由不同)

并且使用RouterModule#forChild注册到user/company/的相对路由

//...
const routes: Routes = [
  { path: 'list', component: UserComponent},
  { path: 'delete/:id', component: UserDeleteComponent},
  { path: 'register/:id', component: UserRegisterComponent},
];

@NgModule({
  imports: [ RouterModule.forChild(routes) ],
  exports: [ RouterModule ]
})

//...

公司的儿童路线也是如此。

forRoot()

创建一个包含所有路由器提供程序和指令的模块。 它还可以选择设置应用程序侦听器以执行初始导航。

forChild()

创建一个包含所有路由器指令和提供者注册路由的模块。

仅对具有将要导入到eager和lazy模块模块的提供程序的共享模块使用forRoot / forChild约定

避免与Angular模块的常见混淆

这个是一个很好的答案在NgModule中使用forRoot的目的是什么? 可以提供有关此主题的额外信息

使用说明

RouterModule可以多次导入:每个延迟加载一次。 由于路由器处理全局共享资源 - 位置,因此我们不能激活多个路由器服务。

这就是为什么有两种方法来创建模块:

1. RouterModule.forRoot - forRoot创建一个包含所有指令,给定路由和路由器服务本身的模块。

2. RouterModule.forChild - forChild创建一个包含所有指令和给定路由的模块,但不包括路由器服务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM