处理 Anuglar 事件

作者: 品品下午茶 | 来源:发表于2022-05-10 09:40 被阅读0次

上一篇文章中,我们使用 @Input 实现了动态注入属性的值。这种情况适用于从父级组件向子级组件传递数据,或者说从上向下传递数据(还记得组件的树形结构吗?)。那么,如何从子级组件向父级组件传递数据呢?

考虑这样一个场景:如果用户喜欢一本书,他通过点击一个按钮,来传达这一信息。解决办法是:在 book 组件模板中,添加一个按钮,当用户点击按钮时,book 组件会通知 AppComponent 组件,用户是喜欢还是不喜欢这本书。

定义输出

使用 VS Code 打开 my-app 项目。我们先修改 book 组件,定义输出属性。

  1. 打开 src/app/book/book.component.ts ,在文件顶部,导入我们需要使用的依赖。
import { Output, EventEmitter } from "@angular/core”;
  1. 在组件类的定义中,增加输出属性 liked
@Output() liked = new EventEmitter<boolean>();

@Output:表示 liked 属性可以从子级组件传递到父级组件。
boolean:表示触发 liked 事件时,传递的数据类型。

  1. 完整代码如下所示。
import { Component, OnInit } from '@angular/core’;
import { Output, EventEmitter } from "@angular/core”;
import { Input } from "@angular/core”;

@Component({
  selector: 'app-book’,
  templateUrl: './book.component.html’,
  styleUrls: ['./book.component.css’]
})
export class BookComponent implements OnInit {

  @Input() name: string;
  @Output() liked = new EventEmitter<boolean>();

  constructor() { }

  ngOnInit(): void {
  }

}

注册事件

接下来,我们修改 book 组件模板。

  1. 打开 src/app/book/book.component.html,在文件末尾添加下面一行代码。
<button (click)="liked.emit(true)">喜欢</button>

绑定事件

喜欢按钮的点击事件的处理方法,需要放置在 book 组件模板的父级组件 AppComponent 中。

  1. 打开 src/app/app.component.ts 文件。在组件类的定义中,添加下面的函数代码,用户在点击按钮时,执行函数中的逻辑。需要注意的是,event 参数是从子级组件传递到父级组件的。
  onLike(event) {
    if (event) {
      window.alert(`我喜欢 ${this.bookName}。`);
    } else {
      window.alert(`我不再喜欢 ${this.bookName}。`);
    }
  }
  1. 打开 src/app/app.component.html. 把在主组件中定义的事件处理函数,关联到按钮的点击事件。
<app-book [name]="bookName" (liked)="onLike($event)"></app-book>

测试效果

使用 ng serve 命令,运行 my-app 项目。

  1. 打开浏览器,访问 http://localhost:4200.
首页显示喜欢按钮
  1. 点击喜欢按钮。


    点击喜欢按钮效果

参考资料

相关文章

  • 处理 Anuglar 事件

    在上一篇文章[https://www.jianshu.com/p/c99e06596e20]中,我们使用 @Inp...

  • JS 事件

    目录 事件流 事件处理程序HTML事件处理程序DOM0级事件处理程序DOM2级事件处理程序IE事件处理程序跨浏览器...

  • anuglar中的插槽

    定义子组件dom 父组件引入

  • react事件处理

    一,事件处理 写法:on+事件名称= {事件处理函数} 类组件触发写法on+事件名称 = 事件处理函数 ---...

  • 跨浏览器的事件处理程序

    事件处理程序有DOM0级事件处理程序、DOM2级事件处理程序,IE事件处理程序,DOM0级事件处理程序具有简单,跨...

  • App事件中心

    App事件中心,事件的的生产端和处理端分离,事件处理结果广播通知,事件状态(初始化、处理中和处理完成)管理,事件类...

  • Chapter 07. Broadcast

    阅读原文 7.1 . 理论概述 广播事件处理属于系统级的事件处理(一般事件处理是属于View级的事件处理) 一个应...

  • iOS和Flutter里的事件处理

    目录先说一下事件处理里的被处理者:事件一、iOS里的事件二、Flutter里的事件然后说一下事件处理里的处理者:响...

  • react文档——事件处理

    事件处理 React 元素的事件处理和 DOM 元素的事件处理非常相似。但也有一些语法差异: React 事件使用...

  • DOM事件的问题!

    1.事件冒泡 2.事件捕获 事件处理程序 1.HTML事件处理程序 2.DOM 0级事件处理程序 3.DOM 2级...

网友评论

    本文标题:处理 Anuglar 事件

    本文链接:https://www.haomeiwen.com/subject/vctkurtx.html