在我的主页上,我有4个指向所有组件的链接,这些组件均属于名为“ CrudModule”的功能模块。
我想知道如何延迟加载该模块,这似乎不起作用:
我的app-routing.module.ts:
const routes: Routes = [
{ path: 'add', loadChildren: () => import(`./crudFeatureModule/crud.module`).then(x => x.CrudModule) }
, { path: 'search', loadChildren: () => import(`./crudFeatureModule/crud.module`).then(x => x.CrudModule) }
, { path: 'importer', loadChildren: () => import(`./crudFeatureModule/crud.module`).then(x => x.CrudModule) }
, { path: 'publier', loadChildren: () => import(`./crudFeatureModule/crud.module`).then(x => x.CrudModule) }
];
在正式的Angular文档中,每个模块仅提及一个组件,请参见
来自https://angular.io/guide/lazy-loading-ngmodules的示例:
app-routing.module.ts:
const routes: Routes = [
{
path: 'customers',
loadChildren: () => import('./customers/customers.module').then(mod => mod.CustomersModule)
},
customers-routing.module.ts:
import { CustomerListComponent } from './customer-list/customer-list.component';
const routes: Routes = [
{
path: '',
component: CustomerListComponent
}
];
以上路径设置为空字符串。这是因为AppRoutingModule中的路径已设置为“客户”。
问题:鉴于延迟加载模块的路径始终需要为空,这是否意味着我应该将所有组件放在不同的模块中以实现延迟加载?换句话说,延迟加载的模块可以处理多个路由吗? 如果是这样,我应该怎么做?
答案 0 :(得分:2)
通常,您的主路由器模块中的路由如下所示:
const routes: Routes = [
{
path: 'crud',
loadChildren: () => import('./crudFeatureModule/crud.module').then(mod => mod.CrudModule)
}
];
并致电RouterModule.forRoot(routes)
。
然后,在您的CrudModule中,您将:
const routes: Routes = [
{ path: 'add', component: AddComponent },
{ path: 'search', component: SearchComponent },
{ path: 'importer', component: ImporterComponent },
{ path: 'publier', component: PublierComponent }
];
并致电RouterModule.forChild(routes)
。
您的网址将是/crud/add
,/crud/search
等。
在使用loadChildren
时,您延迟加载的模块需要知道如何加载子路由,即它需要将其路由注册到RouterModule
。明白我的意思吗?
P.S。在构建路线时,通常被认为是坚持一种语言的最佳实践。法语法语授课的路线:-)法语和法语上的法语翻译可能^^
答案 1 :(得分:0)
如果要加载单独页面中的每个组件,则必须为其所依赖的每个组件创建模块。
我实现了我的应用程序的路由,例如打击和这种工作
{ path: 'person', loadChildren: './projects/person/person.module#PersonModule' },