按照全局约定,假设我的根组件命名为AppComponent
,其选择器为app-root
,根模块命名为AppModule
。
AppModule
正在引导AppComponent
,我假设这告诉角度该组件是我的根组件。
但是在index.html中,我们也叫app-root
,它又叫AppComponent
。
我的问题是为什么我需要在两个位置(index.html和appModule.ts)调用输入组件。为什么不能从一个位置角度猜测定义的根组件?< / p>
PS:我很想寻找答案/建议/建议。
谢谢。
答案 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主机网页中的根组件。