1. 什么是Angular 组件?
Angular 组件是定义应用程序 UI 的基本构建块。 它们由 HTML 模板、CSS 样式和 TypeScript 代码组成。每个组件都定义了一个类,其中包含数据和与之相关的逻辑,并将其与一个 HTML 模板相关联。
每个 Angular 应用程序都具有至少一个组件,这个组件称为根组件,它是层级结构的顶部。每个组件树中都有一个父组件和零个或多个子组件。
2. 创建Angular 组件
2.1 使用CLI创建组件
Angular CLI是一个快速创建组件的命令行工具。
ng generate component my-component
这个命令会在src/app目录下创建一个名为 my-component 的新目录,其中包含组件文件。
2.2 手动创建组件
您可以通过手动创建组件文件来创建组件。
创建一个名为my-component的组件文件夹。在文件夹中添加以下三个文件:
my-component.component.html - 组件的HTML模板
my-component.component.ts - 组件的TypeScript代码
my-component.component.css - 组件的CSS样式
my-component.component.ts 文件包含组件的代码,如下所示:
import { Component } from '@angular/core';
@Component({
selector: 'app-my-component',
templateUrl: './my-component.component.html',
styleUrls: ['./my-component.component.css']
})
export class MyComponent {
title = 'my-component';
}
在这个组件中,我们定义了一个名为 title 的属性,并将其值设置为 'my-component'。 您可以在 HTML 模板中访问这个属性。
3. 组件元数据
Angular 组件使用 @Component 装饰器定义元数据。 元数据是一些附加到类的信息,Angular 使用这些信息来实例化和操作组件。
@Component 装饰器中包含多个属性。
selector - 组件的选择器,用于在模板中标识组件
templateUrl - 组件使用的HTML模板的URL
styleUrls - 组件使用的CSS样式的URL列表
4. 组件生命周期钩子
Angular 组件具有生命周期,生命周期钩子为我们提供了执行特定任务的机会。这些钩子在组件生命周期的不同阶段被调用。
Angular 组件的生命周期钩子有:
ngOnInit() - 在组件被初始化后立即调用
ngOnChanges() - 当一个或多个组件输入属性的值发生变化时调用
ngOnDestroy() - 在组件被销毁之前调用
ngAfterViewInit() - 初始化视图之后调用
5. 组件输入属性
组件可以使用 @Input 装饰器来声明输入属性。 输入属性允许父组件在声明子组件的时候将数据传递给子组件。
在子组件中可以通过 @Input 装饰器来声明输入属性,如下所示:
import { Component, Input } from '@angular/core';
@Component({
selector: 'app-my-component',
templateUrl: './my-component.component.html',
styleUrls: ['./my-component.component.css']
})
export class MyComponent {
@Input() title = '';
}
在这个组件中,我们使用 @Input 装饰器定义了一个名为 title 的输入属性。 父组件可以在使用子组件时将数据通过这个属性传递给子组件。
6. 组件输出属性
组件可以使用 @Output 装饰器来声明输出属性。 输出属性允许子组件将数据传递给父组件。
在子组件中可以使用 EventEmitter 来声明输出属性,如下所示:
import { Component, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-my-component',
templateUrl: './my-component.component.html',
styleUrls: ['./my-component.component.css']
})
export class MyComponent {
@Output() message = new EventEmitter();
sendMessage() {
this.message.emit('Hello from child component!');
}
}
在这个组件中,我们使用 @Output 装饰器定义了一个名为 message 的输出属性,该属性是一个 EventEmitter。 子组件可以使用该事件来将数据传递给父组件。
在子组件的方法中,我们调用 message.emit() 将数据发射出去。
7. 总结
Angular 组件是 Angular 应用程序的基本构建块。组件是可复用的,并且具有许多有用的功能,如生命周期钩子、输入属性和输出属性。