@Output 装饰器的作用是什么?
Output 是属性装饰器,用来定义组件内的输出属性。当应用启动时,Angular 会从根组件开始启动,并解析整棵组件树,数据由上而下流下下一级子组件。而我们今天介绍的 Output 装饰器,是用来实现子组件将信息通过事件的形式通知到父级组件。具体如下图所示:
@Output
装饰器用于在 Angular 组件中定义输出属性,使得子组件可以向父组件发送事件。通过 @Output
,子组件可以向父组件发出事件通知,从而实现组件间的通信。
示例
子组件
import { Component, EventEmitter, Output } from '@angular/core';
@Component({
selector: 'app-child',
template: `
<h2>子组件</h2>
<button (click)="sendData()">发送数据</button>
`
})
export class ChildComponent {
@Output() dataSent = new EventEmitter<string>(); // 使用 @Output 定义输出属性
sendData() {
this.dataSent.emit('来自子组件的数据'); // 发出事件并传递数据
}
}
父组件
import { Component } from '@angular/core';
@Component({
selector: 'app-parent',
template: `
<h1>父组件</h1>
<app-child (dataSent)="receiveData($event)"></app-child>
<p>接收到的数据: {{ receivedData }}</p>
`
})
export class ParentComponent {
receivedData: string = '';
receiveData(data: string) {
this.receivedData = data; // 处理子组件发送的数据
}
}
解释
- 子组件 (
ChildComponent
):
- 使用
@Output
装饰器定义一个dataSent
属性,类型为EventEmitter
。这个属性用于发出事件。 - 在
sendData
方法中,调用emit
方法发出事件并传递数据。
- 父组件 (
ParentComponent
):
- 在模板中使用子组件
<app-child>
,并通过(dataSent)="receiveData($event)"
监听子组件发出的事件。 - 定义
receiveData
方法来处理接收到的数据,并将其存储在receivedData
中。
这样,子组件就能够通过 @Output
向父组件发送事件,实现组件间的交互。你还有其他想了解的内容吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: xUtils 源码解析
下一篇: JavaScript 生成器之精髓
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论