Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Angular 2中延迟加载部分模板?_Javascript_Angular_Typescript_Lazy Loading_Viewport - Fatal编程技术网

Javascript 如何在Angular 2中延迟加载部分模板?

Javascript 如何在Angular 2中延迟加载部分模板?,javascript,angular,typescript,lazy-loading,viewport,Javascript,Angular,Typescript,Lazy Loading,Viewport,我有一个角度2分量,它包含多个子分量。对于其中一些,加载它们的成本相当高,有时根本不需要加载它们。例如,如果用户没有滚动那么远 无论如何,我知道如何延迟加载路由,但是有没有延迟加载模板的方法?仅当某个元素位于视口中或视口附近时类似?您可以将要显示的子组件分隔或分组到要一起加载的较小组件中。 为了缩短加载时间, 1.尝试在组件文件中内联使用较小的模板。 2.在模板中使用*ngIf指令,这样可以避免呈现模板,并且不会创建组件实例。但是,请注意,如果您使用的是*ngi,那么最好只使用未频繁刷新的DOM

我有一个角度2分量,它包含多个子分量。对于其中一些,加载它们的成本相当高,有时根本不需要加载它们。例如,如果用户没有滚动那么远


无论如何,我知道如何延迟加载路由,但是有没有延迟加载模板的方法?仅当某个元素位于视口中或视口附近时类似?

您可以将要显示的子组件分隔或分组到要一起加载的较小组件中。 为了缩短加载时间, 1.尝试在组件文件中内联使用较小的模板。
2.在模板中使用*ngIf指令,这样可以避免呈现模板,并且不会创建组件实例。但是,请注意,如果您使用的是*ngi,那么最好只使用未频繁刷新的DOM,否则您可以创建DOM并通过将其与DOM的[hidden]属性绑定来使用组件,这样就无法延迟加载模板。您可以做的是延迟加载模块


如果将此选项与
ViewContainerRef.createComponent()
(请参见示例)一起使用,以动态添加仅在用户滚动足够远时才显示的组件,则该选项可能会起作用(我还没有尝试过)。

好的。谢谢这可能是另一个问题,但在加载其他所有内容后再加载一个组件怎么样?我想一个简单的
是最简单、最有效的方法。但是,
isAllLoaded
的确切含义需要定义。