📜  AngularJS中的声明和entryComponents之间的区别

📅  最后修改于: 2021-05-13 18:33:54             🧑  作者: Mango

  • 声明:这些是属于(this)模块的组件,指令和管道(声明)的集合。这些组件在本地范围内(私有可见性)。

    句法:

    declarations: Array

    选择器集(指令,组件,管道)被声明为:

    1. 可用于模板的文件。
    2. 从导入的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.