首页 > 解决方案 > App-Routing.module.ts 上的角延迟加载加载默认页面

问题描述

我有一个在 Angular 9 和 ASP.NET core v2.2 上运行的网络应用程序,我有这些路由app-routing.module.ts

    const routes: Routes = [
    {
        path: '',
        loadChildren: () => import('./layouts/website-layout/website-layout.module').then(mod => mod.WebsiteLayoutModule),
    },
    {
        path: '**',
        pathMatch: 'full',
        loadChildren: () => import('./error-page/error-page.module').then(mod => mod.AppErrorPageModule)
    }
];

website-layout-routing.module.ts包含许多子路线。例如:

const routes: Routes = [
    {
        path: '',
        component: WebsiteLayoutComponent,
        children: [
                {
                path: WebSitePagesRoutes.LegaL.TermsOfUsePage,
                loadChildren: () => import('../../website-pages/terms-of-use/terms-of-use.module').then(mod => mod.TermsOfUseModule)
            },
            {
                path: WebSitePagesRoutes.LegaL.PrivacyPolicyPage,
                loadChildren: () => import('../../website-pages/privacy-policy/privacy-policy.module').then(mod => mod.PrivacyPolicyModule)
            },
        ]

包含此website-layout.component.html代码:

<div class="app-container">
    <app-navbar>
        <div class="app-content-wrapper"
            <main>
                <router-outlet></router-outlet>
            </main>
            <footer>
                <app-footer></app-footer>
            </footer>
        </div>
    </app-navbar>
</div>

并且每个加载的子节点都website-layout-routing.module.ts包含可能的最小路由配置。例如:

routes: Routes = [
    {
        path: '',
        component: TermsOfUsePageComponent
    }
];

当我进入一个页面时,例如 web 应用程序的主页,website-layout-routing.module.ts加载了许多前缀为 .js 的文件,default~如下图所示:

在此处输入图像描述

我相信这是在website-layout.module.ts. 似乎在我的情况下,即使我不在这些页面上,也会app-routing.module.ts加载所有位于 下的默认页面。website-layout-routing.module.ts这是上一个屏幕截图中显示的每个default~.js 的调用堆栈。

在此处输入图像描述

我怎样才能防止它发生?

标签: angularroutesangular9

解决方案


如果我正确理解了代码片段,我希望WebsiteLayoutModule在延迟加载该模块时会加载所有引用的路由组件和相关文件。它总是会直接加载,因为它是 AppRoutingModule 中的空 url 组件

如果您还希望子路由组件延迟加载,您需要将它们提取到自己的模块并重复延迟加载过程 - 尽管我建议设置一个最小的演示来测试


推荐阅读