- 声明:这些是属于(this)模块的组件,指令和管道(声明)的集合。这些组件在本地范围内(私有可见性)。
句法:
declarations: Array
选择器集(指令,组件,管道)被声明为:
- 可用于模板的文件。
- 从导入的NgModules导出的那些。
可声明的必须完全属于一个模块。如果您尝试在多个模块中声明同一类,则编译器将发出错误。这些组件直接引用,因此包含在创建的应用程序的最终捆绑包中。
- entryComponent: entryComponent是通过力加载角度的组件,这意味着HTML模板中未引用这些组件。在大多数情况下,当在组件模板中明确声明组件时,Angular会加载组件。但是entryComponents并非如此。 entryComponents仅动态加载,并且从未在组件模板中引用。它指的是在HTML中找不到的组件数组。
Bootstrap entryComponent提供了应用程序的入口点。没有在组件的HTML中显式指定Routed entryComponent,而是将它们注册在routes数组中。这些组件也会动态加载,因此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在其引导程序中作为其入口组件列出。
入口组件和声明之间的区别:
entry Component | Declarations |
---|---|
entryComponent array enures that tree-shaking doesn’t break the application. | Declarations array ensures module encapsulation. |
entryComponents are used to register components for offline computation in a module. These components are referenced here as they not referenced anywhere else in HTML template. | Declarations are used to make Directives(components, pipes etc.) in a specific module. |
Components used for router configuration can be added implicitly. | Directives, components, and pipes are matched against the HTML only if they are declared or imported. |
Array of components are added by ComponentFactoryReolver. | Array of components can be found in HTML template. |