@Output 装饰器的作用是什么?

发布于 2024-10-31 01:16:16 字数 1958 浏览 4 评论 0

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; // 处理子组件发送的数据
  }
}

解释

  1. 子组件 ( ChildComponent ):
  • 使用 @Output 装饰器定义一个 dataSent 属性,类型为 EventEmitter 。这个属性用于发出事件。
  • sendData 方法中,调用 emit 方法发出事件并传递数据。
  1. 父组件 ( ParentComponent ):
  • 在模板中使用子组件 <app-child> ,并通过 (dataSent)="receiveData($event)" 监听子组件发出的事件。
  • 定义 receiveData 方法来处理接收到的数据,并将其存储在 receivedData 中。

这样,子组件就能够通过 @Output 向父组件发送事件,实现组件间的交互。你还有其他想了解的内容吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

二货你真萌

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

墨洒年华

文章 0 评论 0

携余温的黄昏

文章 0 评论 0

玩心态

文章 0 评论 0

悄咪咪不说话

文章 0 评论 0

空袭的梦i

文章 0 评论 0

F

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文