Angular2组件间的数据传递,这几种姿势你知道吗(二)

2020 年 1 月 07 日

Angular2组件间的数据传递,这几种姿势你知道吗(二)

2. 子组件到父组件的数据传递


子组件准备


子组件到父组件的数据传递常用到的方式是通过事件传递,这种方式是通过在子组件中注册一个用来订阅或触发的事件的 EventEmitter 类,并用 @Output 修饰器修饰,将数据保存在事件中(如示例中的 onCollect 事件)


//broad.component.html<div> <div class="board-row">   <square [value]="items[0]" (click) = 'getNum(items[0])'></square>   <square [value]="items[1]" (click) = 'getNum(items[1])'></square>   <square [value]="items[2]" (click) = 'getNum(items[2])'></square> </div> <div class="board-row">   <square [value]="items[3]" (click) = 'getNum(items[3])'></square>   <square [value]="items[4]" (click) = 'getNum(items[4])'></square>   <square [value]="items[5]" (click) = 'getNum(items[5])'></square> </div> <div class="board-row">   <square [value]="items[6]" (click) = 'getNum(items[6])'></square>   <square [value]="items[7]" (click) = 'getNum(items[7])'></square>   <square [value]="items[8]" (click) = 'getNum(items[8])'></square> </div></div>
//broad.component.timport{ Component,Input,OnInit,Output,OnChanges,EventEmitter,SimpleChanges } from '@angular/core';@Component({ selector: 'broad', templateUrl: './broad.component.html', styleUrls: ['./broad.component.css']})
export class BroadComponent implements OnInit, OnChanges{ @Input() options:Array; @Output() onCollect = new EventEmitter<number>(); items:any = []; ngOnInit() { this.items = this.options }getNum(value){ this.onCollect.emit(value);}}
复制代码


父组件接收


(示例请查看上面的 app.component.html 和 app.component.ts)


在父组件上绑定子组件定义之前注册好的事件(如示例中的 onCollect 事件),用来订阅子组件触发的事件,当子组件对应的事件触发时,在父组件中就能够监听到该事件,从中获得子组件传递的数据,从而完成子组件到父组件的数据传递整个子到父的数据传递过程可以形象的想象成在子组件上装备了一个喇叭,同时在父组件上装了一个耳朵,这样只要喇叭有任何数据的变化,耳朵都可以监听获取到,这种事件方式的数据传递的优点是可以实时的监听到子组件数据变化。



3. 其他数据传递方式


这里简单介绍两种其他组件间的数据传递方式


本转载自 Think 体验设计公众号。


原文链接:https://mp.weixin.qq.com/s/QBYWSVi0DDKKNf1GLC5sTw


2020 年 1 月 07 日 17:5588

评论

发布
暂无评论
发现更多内容

ARTS 第 2 周

乌拉里

数据分析师这个岗位,可能近几年会消亡

峰池

数据分析 数据 互联网人

第二周作业二:描述熟悉的框架,是如何实现依赖倒置原则

远方

iOS Universal link 30分钟入门指南

行者

Java 诊断利器 Arthas 优雅排查生产环境

ytao

ChaosBlade:从零开始的混沌工程(三)

郭旭东

混沌工程

Easy-Monitor 3.0 开源 - 基于 Egg 的 Node.js 性能监控解决方案

hyj1991

node.js 开源 前端监控

分布式锁:效率与正确性的衡权

伴鱼技术团队

后端 分布式协同 分布式锁 服务器 分布式架构

Python与文件流

Vincent

Python 编程 文件管理

江帅帅:精通 Spring Boot 系列 02

奈学教育

Spring Boot

第二周作业

远方

第二周学习总结

晓雷

Python类型标注

Vincent

编程语言 python3.7

02周作业——面向对象设计原则

dao

面向对象设计 极客大学架构师训练营 作业

江帅帅:精通 Spring Boot 系列 01

古月木易

Spring Boot

Week2命题作业

星河寒水

第二周作业

andy

架构师训练营第二周 - 学习总结

Eric

架构是训练营

关于问问题和时间管理的感悟

cxuan

程序员 程序人生

架构师训练营第二周作业

James-Pang

极客大学架构师训练营

解析 Swift 中的 @discardableResult

SwiftMic

swift

数据库周刊28│开发者最喜爱的数据库是什么?呼兰脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;MySQL架构选型;Oracle文件损坏处理……

墨天轮

数据库 oracle 阿里云

程序员人人都会遇到的“画饼”,一招教你破解

金刚小书童

职业规划 技术管理 程序员成长 程序员次第 画饼

Week 02 命题作业

卧石漾溪

极客大学架构师训练营

江帅帅:精通 Spring Boot 系列 01

奈学教育

Spring Boot

江帅帅:精通 Spring Boot 系列 02

古月木易

Sprint Boot

蚂蚁金服部门面试题解析:MySQL+Redis+MongoDB+Zookeeper+Ngnix

周老师

Java spring 编程 程序员 面试

后疫情时代给技术经济发展带来的挑战和机遇

CECBC区块链专委会

区块链技术 林左鸣 机遇与挑战

环信助力中国游戏社交类APP出“东南亚”记!

DT极客

TCP/IP协议族终于更新(第4版)了,世界著名计算机精选PDF美滋滋

互联网架构师小马

Java 数据库 TCP 网络协议 计算机

JVM的未来——GraalVM集成入门

孤岛旭日

Java 云原生 JVM GraalVM

Angular2组件间的数据传递,这几种姿势你知道吗(二)-InfoQ