我正在尝试将延迟加载到我的Angular 8应用程序中,但是当我使用官方文档中提供的语法时,我的模块就会急切地加载。
当我使用角度8随附的语法时:
const routes: Routes = [{
path: 'lazy',
// The new import() syntax
loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule)
}];
Run Code Online (Sandbox Code Playgroud)
我没有错误,但是在构建应用程序时没有得到新的块,并且当导航到模块路由时,chrome的“网络”选项卡中没有任何显示。(尽管我可以导航到该模块就好了)
但是,如果我将其重写为:
const routes: Routes = [{
path: 'lazy',
// The following string syntax for loadChildren is deprecated
loadChildren: './lazy/lazy.module#LazyModule'
}];
Run Code Online (Sandbox Code Playgroud)
(这是旧的语法)可以正常工作。
所讨论的模块绝对不会导入其他任何地方,结果的差异仅来自更改语法。
我想知道那里是否缺少什么。我在想,也许是我的Angular未正确设置到版本8(或其他软件包),所以这是我的ng version:
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.800.4
@angular-devkit/build-angular 0.800.4
@angular-devkit/build-optimizer 0.800.4
@angular-devkit/build-webpack 0.800.4
@angular-devkit/core 8.0.4
@angular-devkit/schematics 8.0.4
@angular/cdk 8.0.0
@angular/cli 8.0.4
@angular/material 8.0.0
@ngtools/webpack 8.0.4
@schematics/angular 8.0.4
@schematics/update 0.800.4
rxjs 6.5.2
typescript 3.4.5
webpack 4.30.0
Run Code Online (Sandbox Code Playgroud)
我确实尝试创建了一个新的示例项目,并设法使其在那儿工作,但是据我所知,这两个项目的所有内容都具有相同的版本。
知道什么会导致新语法不起作用吗?
在尝试提供一个最小的可复制示例,尝试更新我的所有软件包或重新安装它们,以及简单地浏览我的所有文件并尝试查找出问题之间进行了大量的挖掘之后,我设法解决了该问题。
我本质上将我的应用程序重新升级到了角度8,就好像我在使用角度7(甚至我应该已经在使用角度8)一样,使用了该线程中ng update @angular/cli --from 7 --to 8 --migrate-only
ng update @angular/core --from 7 --to 8 --migrate-only提到的命令
这将所有延迟加载的旧语法自动更新为新的,在构建/服务时,我终于可以看到每个模块的所有块
鉴于这些命令已解决,我认为问题出在某个地方的软件包/依赖关系。
| 归档时间: |
|
| 查看次数: |
2636 次 |
| 最近记录: |