入口(或根)组件如何加载?

时间:2019-03-22 11:47:15

标签: angular

按照全局约定,假设我的根组件命名为AppComponent,其选择器为app-root,根模块命名为AppModule

AppModule正在引导AppComponent,我假设这告诉角度该组件是我的根组件。

但是在index.html中,我们也叫app-root,它又叫AppComponent

我的问题是为什么我需要在两个位置(index.html和appModule.ts)调用输入组件。为什么不能从一个位置角度猜测定义的根组件?< / p>

PS:我很想寻找答案/建议/建议。

谢谢。

4 个答案:

答案 0 :(得分:1)

platformBrowserDynamic().bootstrapModule(AppModule)语句告诉Angular要引导哪个Module(通常是AppModule)。

在引导的Module内,您有一个bootstrap: [AppComponent]语句,该语句定义了将用于引导应用程序的Component

最后,在您的index.html文件中,必须使用其选择器(通常为app-root)指定根组件。

最后一部分的原因是Angular实际上可以找到要引导的元素并将其初始化。将根组件包装在其他HTML元素中并不少见。

答案 1 :(得分:0)

AppModule中提到的引导程序组件(AppComponent)用来告诉angular该组件是根组件。

  

为什么您再次在index.html中提及?

Angular基本上不会渲染任何组件,除非您为其创建标签。或动态创建。

Angular无法自行在内部创建app-root的标签,因为我们开发人员有一些要求将app-root放在某些div标签内。

答案 2 :(得分:0)

首先,如果在纯HTML标记文件中放置了选择器(say <app-root>),则浏览器将无法识别该标记,因为它不是有效的HTML元素。这就是angular的用武之地。当您“引导” angular应用程序时,您基本上会告诉浏览器它可以识别哪些标签。这是通过在bootstrap的{​​{1}}中定义组件(以及选择器)来完成的。

一旦浏览器知道了AppModule,其余的角色将由angular接管,并加载您的应用程序。

因此,您不会在两个地方调用entryComponent。在<app-root>中,这只是放置角度应用程序的地方。在index.html中,您这样做是为了使浏览器将自定义标签视为有效的HTML元素。

答案 3 :(得分:-1)

NgModule描述了应用程序各部分如何组合在一起。每个应用程序都有至少一个Angular模块,即您引导启动该应用程序的根模块。按照惯例,通常称为AppModule

import语句之后是带有@NgModule装饰器的类。

@NgModule装饰器将AppModule标识为NgModule类。 @NgModule带有一个元数据对象,该对象告诉Angular如何编译和启动应用程序。

声明-此应用程序的独立组件。 导入-导入BrowserModule以具有特定于浏览器的服务,例如DOM渲染,清理和位置。 提供者-服务提供者。 bootstrap-Angular创建并插入到index.html主机网页中的根组件。

More details Angular official docs