写点什么

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:54545

评论

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

低代码为何这么“香”

华为云开发者联盟

低代码 开发 华为云 华为云开发者联盟 华为云Astro

与达沃斯同行 | XTransfer与达沃斯百位全球创新者“头脑风暴”

XTransfer技术

Flink Kubernetes Operator 介绍

数新网络官方账号

flink

淘宝/天猫店铺商品详情 API 实现实时数据获取:快速、稳定、高效

Noah

工作中使用Redis的10种场景

快乐非自愿限量之名

数据库 redis 前端 开发

云行| 国云筑基 焕新启航,天翼云中国行·东莞站圆满举行!

天翼云开发者社区

云计算 数字化 云电脑

分布式系统中的分布式链路追踪与分布式调用链路

天翼云开发者社区

分布式系统 网络

第一个程序:HelloWorld——IDEA 使用

小魏写代码

ICDM'23 BICE论文解读:基于双向LSTM和集成学习的模型框架

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 论文解读

Hex-Rays IDA Pro(交互式反汇编工具) v7.7汉化版

南屿

IDA Pro 静态反编译工具

一文教会你!如何利用火焰图快速定位内存泄漏?b

Greptime 格睿科技

数据库 rust 内存泄漏

面试官:SpringBoot如何实现缓存预热?

王磊

Java 面试

软件测试/测试管理训练营马上开营! 快来免费领取试听课吧~

测吧(北京)科技有限公司

测试

实战讲解|Trino 在袋鼠云数栈的探索与实践

袋鼠云数栈

大数据 前端 计算引擎 trino

k8s探针详解

EquatorCoco

Kubernetes k8s 容器化

Flask请求与响应-视图函数处理请求数据

测试人

软件测试 测试 自动化测试 测试开发

JNPF低代码与其他低代码工具功能有什么不同?

这我可不懂

低代码 JNPF

如何利用容器与中间件实现微服务架构下的高可用性和弹性扩展

天翼云开发者社区

架构 微服务

推动SiCMOSFET国产化,华秋获“芯塔电子”优秀媒体合作伙伴奖

华秋电子

测试管理训练营马上开营! 快来免费领取试听课吧~

测试人

软件测试 测试 自动化测试 测试开发

Solidity案例详解(一)存钱罐合约

BSN研习社

区块链 Solidity

K8S学习指南(4)-minikube的使用

俞兆鹏

软件测试 | 拒绝上市公司的 Offer,选择自己喜爱的行业,这么从容不迫他凭什么?

测吧(北京)科技有限公司

测试

交互式产品原型设计工具 Axure RP 9汉化授权版 【Mac/win】

南屿

Axure RP 9汉化 Axure RP 9授权码 Axure RP 9破解版 原型设计工具

第五代英特尔至强可扩展处理器以强劲性能,打造更“全能”的计算

E科讯

揭秘代币价值:Token Explorer 带您洞察市场,把握投资先机

Footprint Analytics

Token 代币

代码注释是程序员必备的技能吗?

小魏写代码

低功耗DC-DC电源模块的精细化PCB设计

华秋电子

微信多开助手for mac下载

iMac小白

MacOS远程管理软件哪款好?Royal TSX for Mac v6.0.2激活版

南屿

Royal TSX 教程 MacOS远程管理 Royal TSX mac破解版

React Native性能优化指南

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