QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

  • 2020-01-07
  • 本文字数:1167 字

    阅读完需:约 4 分钟

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

组件间的数据传递方式有很多,这里只介绍几种常用场景下的数据传递方式,以方便初学者学习理解一点组件间数据传递的知识,若有不准确之处,欢迎指正,大神请轻喷,废话不多说了,开整!

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

父组件向子组件数据传递的最简便的方式是通过子组件的输入属性流入子组件,并在子组件中完成拦截接收,从而实现由外到内的数据传递(@Input 输入属性在这里就不多做介绍,它在父到子组件的作用,如下图,像探针一样获取数据并传递到子组件内部)


下面我们先看下示例:



父组件准备


首先在父组件(app-root)中定义需要传递的数据如示例中的 showNum ,然后将数据与子组件的 value 进行绑定,如下代码所示


//app.component.html
<div style="text-align:center" > <h1> Welcome to {{ title }}! <br/><button (click)="children.fn()">通过#children获取子组件的方法</button><br/><button (click)="onclick()">通过@viewChild获取子组件的方法</button><content #children></content> <square [value]="showNum"></square> <broad [options]="broadNum" (onCollect)='collectNum($event)'></broad> </h1></div>
//app.component.tsimport { Component,ViewChild } from '@angular/core';import { ContentComponent } from './component/content.component/content.component';@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css']})export class AppComponent { @ViewChild(ContentComponent) child: ContentComponent; title = 'app'; broadNum = [0,1,2,3,4,5,6,7,8]; showNum = '1'; collectNum(num){ this.showNum = num; } onclick(){ this.child.fn(); }}
复制代码

子组件接收

然后在子组件中通过 @input 装饰器来获取 value,然后在组件数据 change 回调中将 value 值更新到子组件的视图,完成一次父组件到子组件的数据传递(说明:本示例中使用 ngOnChanges 监听数据变化更新视图,你也可以使用 setter 拦截输入属性实现数据的拦截)


//square.component.html<button class="square"> {{square.value}}</button>
// square.component.tsimport { Component,Input,OnInit,OnChanges,SimpleChanges} from '@angular/core';@Component({ selector: 'square', templateUrl: './square.component.html', styleUrls: ['./square.component.css']})export class SquareComponent implements OnInit, OnChanges{ square:object = { value:'12' }; @Input() value:string; ngOnChanges(changes: SimpleChanges) { // 外部修改show属性的处理,初始定义在ngOnInit中处理 if (changes['value']) { this.square.value = this.value } }}
复制代码


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


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


2020-01-07 17:54617

评论

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

产研指南针的量化指标实践笔记

车江毅

项目管理 研发管理 降本增效 北极星指标 效能度量

职场IT老手教你3步教你玩转可视化大屏设计,让领导眼前一亮!

葡萄城技术团队

如何将物理机Windows系统迁移到VMware虚拟机?

天翼云开发者社区

3Dmax和C4d有什么区别?

Finovy Cloud

3DMAX

Java程序员:为了跳槽刷完1000道真题,想不到老板直接给我升职了

程序知音

Java java面试 Java面试题 Java面试八股文 后端面试

“云”上书店,氛围感拉满!

天翼云开发者社区

《解构领域驱动设计》-领域驱动设计统一过程

珑彧

Java 读书笔记 架构 方法论 领域驱动设计

云端智创 | 基于视频AI原理的音视频智能处理技术

阿里云CloudImagine

云计算 音视频

全板电镀与图形电镀,到底有什么区别?

华秋电子

PCB PCB生产

舞台LED显示屏对灯光设计产生了哪些影响

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

如何在 Web 端实现一个多人数独游戏

声网

Vue 互动白板 RTE

DAAM:首次利用视觉语言学解释大型扩散模型

Zilliz

天翼云第八代云主机助力企业攻克上云“大象流”加密处理业务难题

天翼云开发者社区

共铸国云智领未来| 数据进超市,海岛更善治

天翼云开发者社区

Knative Autoscaler 自定义弹性伸缩

天翼云开发者社区

JVM说--直接内存的使用

京东科技开发者

JVM io nio 虚拟机 企业号 2 月 PK 榜

带你动手做AI版的垃圾分类

华为云开发者联盟

人工智能 华为云 企业号 2 月 PK 榜 华为云开发者联盟 垃圾分类

Fastjson踩“坑”记录和“深度”学习

阿里技术

Fastjson

快速入门API Explorer

华为云开发者联盟

云计算 华为云 API Explorer平台 企业号 2 月 PK 榜 华为云开发者联盟

模块1作业

王琨琨

架构实战营

一文详解数GaussDB(DWS)函数出参带出方式

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

领导者!天翼云蝉联政务公有云基础设施市场第一

天翼云开发者社区

3D可视化:18个WebGL框架和Web3D图形库

2D3D前端可视化开发

WebGL 三维可视化 web3d 3d绘图引擎

Angular2组件间的数据传递,这几种姿势你知道吗(一)_文化 & 方法_Think体验设计_InfoQ精选文章