AngularJS中声明和entryComponents之间的区别
- 声明。这些是属于(本)模块的组件、指令和管道(声明)的集合。这些组件都在本地范围内(私有可见性)。
语法:
declarations: Array<Type | any[]>
- 选择器的集合(指令、组件、管道)被声明。
1.可用于模板的使用。
2.那些从导入的NgModules中导出的。 - entryComponent。entryComponent是强制加载angular的组件,这意味着这些组件在HTML模板中没有被引用。在大多数情况下,Angular会在组件模板中明确声明的情况下加载一个组件。但对于entryComponents来说,情况并非如此。entryComponents只被动态加载,在组件模板中从不被引用。它指的是在HTML中找不到的组件数组。
Bootstrap entryComponent提供了应用程序的入口点。Routed entryComponents不是在组件的HTML中明确指定的,而是在routes array中注册的。这些组件也是动态加载的,因此Angular需要了解它们。
下面是一个app.module.ts看起来像什么的例子。
import { BrowserModule } from
'@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HeaderComponent } from
'./header/header.component';
import { ListComponent } from
'./list/list.component';
import { DetailComponent } from
'./detail/detail.component';
import { AppComponent } from
'./app.component';
@NgModule({
declarations: [
AppComponent,
HeaderComponent,
ListComponent,
DetailComponent,
],
imports: [
BrowserModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
- 在上面的例子中,所有的组件和管道都被列在声明中,但只有AppComponent被列在bootstrap中,因为它是一个入口组件。
条目组件和声明之间的区别:
入口组件 | 声明 |
---|---|
entryComponent数组确保树形晃动不会破坏应用程序。 | Declarations数组确保了模块的封装。 |
entryComponents用于在模块中注册用于离线计算的组件。这些组件在这里被引用,因为它们在HTML模板的其他地方没有被引用。 | 声明是用来在一个特定的模块中制定指令(组件,管道等)。 |
用于路由器配置的组件可以被隐式添加。 | 指令、组件和管道只有在它们被声明或导入时才会与HTML匹配。 |
组件阵列是由ComponentFactoryReolver添加的。 | 组件数组可以在HTML模板中找到。 |