Angular 12个延迟加载语法——什么是正确的?

Angular 12 lazy loading syntax - what is correct?

我正在学习 Angular 培训课程(使用 Angular 12)。

{ path: 'training', loadChildren: './training/training.module.ts#TrainingModule'}, 

不工作:

Unhandled Promise rejection: Cannot find module './training/training.module.ts' ; Zone: ; Task: Promise.then ; Value: Error: Cannot find module './training/training.module.ts

我 100% 确定来自 app-routing.module.ts 的包含此代码的路径是正确的(我 copy/pasted 它,以确保)。

但是,之前的课程(由同一位讲师授课)让我认为正确的语法应该是:

{path: 'training', loadChildren: () => import('./training/training.module').then(module => module.TrainingModule)}

为什么会有这两种可能?它们在功能上是等价的吗?我应该什么时候使用哪个?

延迟加载功能模块语法在 angular 的主要版本中的某个时刻发生了变化。在您的情况下 (Angular 12) 使用新语法。

新语法是

{path: 'training', loadChildren: () => import('./training/training.module').then(module => module.TrainingModule)}

这将适用于较旧的 anuglar 应用程序

{ path: 'training', loadChildren: './training/training.module.ts#TrainingModule'},