博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ngModule中的entryComponents是什么?
阅读量:6448 次
发布时间:2019-06-23

本文共 1744 字,大约阅读时间需要 5 分钟。

ngModule中的entryComponents是什么?

我正在研究依赖于2的Ionic3应用程序。 所以纳入了新的ngModules介绍。 我正在添加我的app.module.ts。 下面

import { NgModule } from '@angular/core';import { IonicApp, IonicModule } from 'ionic-angular';import { MyApp } from './app.component';import { Users } from '../pages/users/users';@NgModule({  declarations: [    MyApp,    Users  ],  imports: [    IonicModule.forRoot(MyApp)  ],  bootstrap: [IonicApp],  entryComponents: [    MyApp,    Users  ]})export class AppModule {}

entryComponents在这里做什么?

entryComponents在这里做什么? 组件已经在声明中定义。 那么有什么需要重复呢? 如果我不在这里包含组件,会发生什么?

回答:
Angular使用entryComponents来启用“树震动”,即只编译项目中实际使用的组件,而不是编译所有在ngModule中声明但从未使用的组件

这是用ViewContainerRef.createComponent()添加的动态添加的组件。将它们添加到entryComponents告诉脱机模板编译器编译它们并为它们创建工厂。

路由配置中注册的组件也自动添加到entryComponents,因为router-outlet也使用ViewContainerRef.createComponent()将路由组件添加到DOM。

离线模板编译器(OTC)只生成实际使用的组件。如果组件不直接用于模板,OTC不知道是否需要编译。有了entryComponents,你可以告诉OTC也编译这些组件,以便在运行时可用。

什么是入口组件? (angular.io)

NgModule文档(angular.io)

定义这个组件时定义应该被编译的组件。对于此处列出的每个组件,Angular将创建一个ComponentFactory并将其存储在ComponentFactoryResolver中。

如果你没有给entryComponents列出一个动态添加的组件,你会得到一个错误消息,因为Angular没有创建一个。

另见

你不会比Angular文档得到更好的解释。

以下是角度文档的解释。

入口组件是根据类型强制加载的任何组件。

通过它的选择器声明式加载的组件不是一个入口组件。

大多数应用程序组件是声明式加载的。 Angular使用组件的选择器来定位模板中的元素。然后创建组件的HTML表示并将其插入选定元素的DOM中。这些不是条目组件。

一些组件只能动态加载,并不会在组件模板中引用

引导的根AppComponent是一个入口组件。确实,它的选择符匹配index.html中的元素标记。但是index.html不是组件模板,AppComponent选择器不匹配任何组件模板中的元素。

动态加载AppComponent,因为它是按照@ NgModule.bootstrap中的类型列出的,或者是通过模块的ngDoBootstrap方法强制性地加载。

路由定义中的组件也是条目组件。路径定义是指按其类型的组件。路由器忽略路由组件的选择器(如果它有一个),并动态地将组件加载到RouterOutlet中。

编译器无法通过在其他组件模板中查找这些条目组件来发现这些条目组件。您必须通过将它们添加到entryComponents列表来告诉它们。

Angular会自动将以下类型的组件添加到模块的entryComponents中:

@ NgModule.bootstrap列表中的组件。

路由器配置中引用的组件。
您不必明确提及这些组件,虽然这样做是无害的。

传送门:myBlog

转载地址:http://frlwo.baihongyu.com/

你可能感兴趣的文章
leetcode124二叉树最大路径和
查看>>
AngularJS笔记整理 内置指令与自定义指令
查看>>
学习OpenCV——BOW特征提取函数(特征点篇)
查看>>
shell与正则表达式
查看>>
第三篇:白话tornado源码之请求来了
查看>>
10分钟搞定支付宝和微信支付的各种填坑
查看>>
表示数值的字符串
查看>>
JQUERY AJAX请求
查看>>
html css 伪样式
查看>>
超级账本Fabric区块链用弹珠游戏Marbles 部署
查看>>
Maven多模块项目
查看>>
Oracle、PostgreSQL与Mysql数据写入性能对比
查看>>
整理Java基础知识--选择与判断
查看>>
Linux查看程序端口占用情况
查看>>
jar包冲突案例分析.md
查看>>
控制圈复杂度的9种重构技术总结
查看>>
当软件项目全部能靠自己搞定了,也能接几万元的软件项目时,未必适合创业...
查看>>
数据分析--数字找朋友
查看>>
推荐好用的开源库或软件
查看>>
18年selenium3+python3+unittest自动化测试教程(下)
查看>>