组件

组件控制屏幕上被称为视图的一小片区域。

组件由业务逻辑(.ts)、页面模板(.html)、样式(.css/.less等)组成

angular创建组件后会自动更新,不需要重启项目

根组件

  • app.component.html
  • app.component.ts
  • app.component.css

创建组件

使用angular的命令创建组件,参考链接:https://cli.angular.io/

  1. cd test01
  2. # 在src/app文件夹中生成一个components文件夹,在该文件夹下创建一个news组件,并自动在根组件app.module.ts中引入该组件
  3. ng generate component components/news
  4. # 或者简写为
  5. ng g component components/news

创建的组件中包含4个文件:

  • xxx.component.css 样式文件(如果选了sass/scss/less等预编译,会生成相对应的样式文件)
  • xxx.component.html 渲染的html模板
  • xxx.component.ts 组件typescript文件
  • xxx.component.spec.ts 测试用的ts文件,可删除

其中,xxx.component.ts文件内容如下:(以search组件的search.component.ts为例)

  1. // 从angular核心库中导入Component符号
  2. import { Component, OnInit } from '@angular/core';
  3. // 组件装饰器,声明下面的类为一个组件
  4. @Component({
  5. selector: 'app-search', // 是一个css选择器,一旦模板HTML中找到这个选择器对应的标签,就创建并插入该组件的一个实例的视图。即其他组件html渲染时引入该组件视图的标签名
  6. templateUrl: './search.component.html', // 该组件的html模板文件相对于这个组件文件的地址。还可以用template属性的值来提供内联的html模板。这个模板定义了该组件的宿主视图
  7. styleUrls: ['./search.component.css']
  8. // providers:[HeroService] ,当前组件所需的服务的一个数组。
  9. })
  10. export class SearchComponent implements OnInit {
  11. constructor() { }
  12. ngOnInit(): void {
  13. }
  14. }

引入组件

如果是通过命令创建的组件,创建的组件会自动被进行引入到根模块app.module.ts中。

如果是手工创建的组件,使用时需要引入到app.module.ts中

  1. // 在根模块app.module.ts的头部使用import引入创建的模块
  2. import { NewsComponent } from './components/news/news.component';
  3. // 在根模块app.module.ts中,@NgModule的declarations中加入该组件
  4. @NgModule({
  5. declarations: [
  6. AppComponent, NewsComponent
  7. ],
  8. // ....
  9. })

调用组件

如果需要在其他组件中调用刚刚创建的新闻组件,则在组件的html中需要引用的位置加入组件名称标签

  1. <!-- news.component.ts文件中的@Component装饰器的selector的值 -->
  2. <app-news></app-news>

可以通过组件扩展html的标签