我对声明导出数组和导出模块类之间的区别感到困惑吗?
例如,我有一个功能模块:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { TabsPage } from './tabs.page';
const routes: Routes = [
{
path: 'tabs',
component: TabsPage,
children: [
{
path: 'tab1',
children: [
{
path: '',
loadChildren: '../tab1/tab1.module#Tab1PageModule'
}
]
},
{
path: 'tab2',
children: [
{
path: '',
loadChildren: '../tab2/tab2.module#Tab2PageModule'
}
]
},
{
path: 'tab3',
children: [
{
path: '',
loadChildren: '../tab3/tab3.module#Tab3PageModule'
}
]
},
{
path: '',
redirectTo: '/tabs/tab1',
pathMatch: 'full'
}
]
},
{
path: '',
redirectTo: '/tabs/tab1',
pathMatch: 'full'
}
];
@NgModule({
imports: [
RouterModule.forChild(routes)
],
exports: [RouterModule]
})
export class TabsPageRoutingModule {}
我的理解是,如果要导入TabsPageRoutingModule,例如在AppModule中,则我们的根应用现在具有在此模块中指定的定义的路由以及导出的RouterModule。如果是这种情况,为什么我们不能在@NgModule装饰器的导入中声明RouterModule?或者,为什么我们不能导出RouterModule路由?
谢谢!
答案 0 :(得分:0)
我对声明导出数组和导出模块类之间的区别感到困惑吗?
导入另一个模块的模块不知道所有需要的依赖模块。因此,子模块可以 export 辅助模块,以便在导入子模块时将导入所有依赖项。
RouterModule.forChild(routes)
这将使用静态函数创建一个子模块。该子模块不包含RouterModule
的功能,但用于使用此路由配置来配置路由器。
我的理解是,如果要导入TabsPageRoutingModule,例如在AppModule中,则我们的根应用现在具有在此模块中指定的定义的路由以及导出的RouterModule。
仅将RouterModule
导入AppModule
。
路由配置通过依赖项注入暴露给路由器。 forChild()
函数创建用于保存路由配置的提供程序。
如果是这种情况,为什么我们不能在@NgModule装饰器的导入中声明RouterModule?或者,为什么我们不能导出RouterModule路由?
我不确定我是否理解您的问题,但是使用单独的模块定义路由配置完全是可选的。您可以根据需要在RouterModule.forChild(...)
内使用AppModule
。
您不需要将RouterModule
导入TabsPageRoutingModule
,因为它不使用它。该模块仅用于定义保存路由配置的提供程序。