$event.target/currentTarget
如上面的代码所示,当编译器在import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent {
title = 'TEST-convinience';
}
文件中找到选择器<app-root>
时,它会与模板index.html
集成并呈现其视图。
进行这种集成有什么好处和好处?
相反,我们可以使用app.component.html
来创建视图。
答案 0 :(得分:3)
要回答你的问题,你需要了解一下Angular的bootstrap过程。当Angular引导应用程序时,它会查找根模块中列出的bootstrap
组件:
Angular将首先加载指示的
来启动应用platformBrowserDynamic().bootstrapModule(AppModule);
在该模块中,Angular将查找引导程序数组中列出的组件:
@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ] // this is the next step
})
export class AppModule { }
接下来,分析引导程序组件。那是Angular学习它的选择器的时候:
@Component({ 选择器:'app-root', templateUrl:'。/ app.component.html', }) export class AppComponent { }
现在Angular知道它应该在网页(index.html)中查找<app-root></app-root>
,并将此元素替换为AppComponent
模板
<app-root>loading</app-root>
好的,现在假设你想让index.html
成为应用程序组件模板,你会把它放在哪里?如果你把<app-root>
放在那里,你将最终得到一个无限循环,因为组件不断在自己的模板中创建。如果你没有把<app-root>
放在那里,那么你会把它放在哪里以便Angular知道在哪里加载应用程序?
基本上,根组件需要嵌入到一个vanilla html文档中,以便Angular知道在网页中构建应用程序的位置。
答案 1 :(得分:2)
我想澄清一些疑问。
(1)Angular is all about `components`.It uses a `hierarchy of components` as
its main `architectural concept`.
(2)Modularity – much core functionality has moved to modules, producing a
lighter, faster core.
组件主要处理view of the application
和logic on the page
。该组件包含两个重要的事项:a view
(。html)和some logic
(。ts)。
在Simple中,您可以将组件理解为一个独立且独立的视图,可以与其他组件一起使用(通过将组件选择器作为<my-app></my-app>
传递)
假设您创建了一个&#39;日历组件&#39;并实现了所有逻辑,并且它作为一个单独的组件完美地工作,然后您可以在其他&#39; modules
&#39;中使用此组件。或者在任何其他'app'
中。
现在,为什么要在index.html中传递选择器? 因为: -
(1)在angular through命令中创建新项目时
ng new PROJECT-NAME
(请参阅https://github.com/angular/angular-cli),然后默认创建一个app.module.ts
的模块(父级)
模块)。
并且,app.component.ts
的选择器会在创建新项目时自动传递到index.html
。
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.log(err));
问题的答案在项目的main.ts
中,默认情况下是在创建项目时创建的。
main.ts
: - 1) Parent Module is imported as `import { AppModule } from './app/app.module';` (Since default single module created
2)By default('default' refers to when a new project is created), then...
`platformBrowserDynamic().bootstrapModule(AppModule)`.
This statement bootstrap Module which is passed as a parameter inside it(by default, 'AppModule' ).
It means it will load the `module` which is bootstraped as a parameter.
现在,在app.module.ts
中,在创建新项目时创建的唯一默认组件是app.component.ts
。现在,我们必须查看app.component.ts
模板,即app.component.html
,因此,选择器将作为<app-root></app-root>
传递。 (传递选择器参考视图,这是一个角度的概念)。
希望有所帮助。