在Angular中,延迟加载模块通常使用loadChildren
属性来定义。默认情况下,Angular路由器会在初始化时加载所有延迟加载模块的代码。
如果您希望手动输入URL时可以正常工作,但从导航菜单跳转时不重定向到默认路由,您可以尝试以下解决方法:
PreloadAllModules
预加载策略:import { NgModule } from '@angular/core';
import { Routes, RouterModule, PreloadAllModules } from '@angular/router';
const routes: Routes = [
// 定义其他路由
// 延迟加载模块
{
path: 'lazy',
loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule)
},
// 默认路由
{
path: '',
redirectTo: '/default',
pathMatch: 'full'
}
];
@NgModule({
imports: [RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })],
exports: [RouterModule]
})
export class AppRoutingModule { }
通过使用PreloadAllModules
预加载策略,Angular会在初始化时自动加载所有延迟加载模块的代码,这样从导航菜单跳转时就不会重定向到默认路由。
routerLink
指令:Lazy Module
确保您的导航菜单中使用了routerLink
指令来跳转到延迟加载模块的路由路径,而不是直接使用URL。
通过以上两种方法,您应该能够解决Angular路由对于延迟加载模块的行为不符合预期的问题。