angular - Angular 6:使用延迟加载在同一页面上加载多个模块
问题描述
我有一个应用程序,我想在同一页面中一个一个地延迟加载多个模块,以便我可以使用相同的路由路径减少页面加载时间(例如在我的仪表板页面中)。
我的 app-routing.modules.ts 文件:
const appRoutes: Routes = [
{ path: 'dashboard',
loadChildren: './dashboard/dashboard.module#DashboardModule'
},
{ path:'dashboard',
loadChildren: () => UserlistComponent, pathMatch:'full'
},
{ path:'dashboard',
loadChildren: () => ClientlistComponent, pathMatch:'full'
},
{ path: '',
loadChildren: './home/home.module#HomeModule'
},
我的 dashboard-routing.modules.ts 文件看起来像这样:
const routes: Routes = [
{
path: '',
component: DashboardComponent,
},
];
我无论如何都找不到这样做:当用户在仪表板页面上重定向时,我想加载两个组件(用户列表和客户端列表懒惰一一加载,以便我可以减少页面加载时间)。
有类似的stackoverflow问题(链接),但我想加载具有延迟加载概念的组件
解决方案
据我了解,您可能应该在仪表板模块中导入您的 UserList 和 ClientList 组件。如果您在同一页面中需要它们,那么您应该直接从仪表板组件模板中调用它们。基本上加载仪表板模块时的 loadChildren 属性已经在执行您似乎瞄准的延迟加载。
这将为您提供应用程序路线:
const appRoutes: Routes = [
{ path: 'dashboard',
loadChildren: './dashboard/dashboard.module#DashboardModule'
},
{ path: '',
loadChildren: './home/home.module#HomeModule'
}
];
保持仪表板路由不变,但只需将您的 UserListComponent 和 ClientListComponent 放在仪表板文件夹中并将它们导入仪表板模块,然后在仪表板组件模板中调用它们。
// Dashboard module
import { UserListComponent } from '@dashboard/user-list/user-list.component';
import { ClientListComponent } from '@dashboard/client-list/client-list.component';
@NgModule({
declarations : [
UserListComponent,
ClientListComponent,
]
})
export class DashboardModule {}
<!-- Dashboard component -->
<h1> Dashboard </h1>
<div class="row">
<div class="col-6">
<app-user-list></app-user-list>
</div>
<div class="col-6">
<app-client-list></app-client-list>
</div>
</div>
推荐阅读
- javascript - Chrome 扩展离线
- azure - 如何在 Azure API 管理上分离开发和生产环境?
- android - 使用线性布局填充其余空间
- javascript - 打开对话框时在对话框内设置焦点文本字段
- c# - SQL Server - 注册用户代码以在尝试完成事务时运行
- javascript - 按属性值对对象的javascript数组进行排序并按条件重新排序
- angular - 函数在 ngOnInit 中只传递一次
- time - 申请终止时间
- forms - 当我单击文本表单字段时,它会弹出键盘进行输入,但我希望仅在用户双击时完成
- android - obj.getJSONArray 未获取 JSON 响应