【发布时间】:2018-06-15 22:04:46
【问题描述】:
延迟加载是一种常用的技术。然而,在 Angular 中,这种技术的粒度级别似乎停止在模块级别。
这意味着您可以在浏览器中加载模块 main,然后在特殊情况下可以延迟加载模块 B、C 和 D。
几乎所有网络教程都解释了这一点。但是,有没有办法懒加载组件呢?
考虑这个简单的例子,用户进入应用程序,当点击“发票”链接时,URL 更改为新路由 /invoice/list 并且进度条显示正在加载,而包含 HTML 和 JS 的 invoices 组件正在在浏览器中加载,在主模块中动态注册,并显示在相关插座中。 Angular 有可能吗?
【问题讨论】:
-
将它们作为单独的模块
-
你的意思是每个组件的模块?这太超载了。效率不高。
-
不,没有直接的做法,但您可以加载一个组件类,然后动态生成一个模块和组件,see this tutorial
-
也许这会在 Angular 7 中添加,see this issue
-
是的,从 Ivy 的 Angular 9 开始。看到这个post。
标签: angular components lazy-loading angular-components