大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

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

评论

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

中国电子云数据库 Mesh 项目 DBPack 的实践

峨嵋闲散人

分布式事务 分库分表 读写分离

DPU芯片企业中科驭数加入龙蜥社区,构建异构算力生态

OpenAnolis小助手

芯片 生态 龙蜥社区 CLA 中科驭数

干货| 四种渲染到底是啥?终于有人讲明白了!(下)

Orillusion

开源 WebGL 元宇宙 Metaverse webgpu

[Day45]-[BFS]-滑动谜题

方勇(gopher)

LeetCode BFS 数据结构算法

一站式Dao打造工具M-DAO:门槛低、效率高

股市老人

M-DAO开辟区块链全新战场,或成DAO赛道龙头

西柚子

[Day44]-[回溯]-括号生成

方勇(gopher)

LeetCode 回溯算法 数据结构算法

在线HTML转Excel工具

入门小站

工具

首发!高性能数据访问中间件 OBProxy(一):功能模块及特性详解

OceanBase 数据库

oceanbase

Hoo研究院|币海寻珠—5月区块链行业投资机构动向(上)

区块链前沿News

区块链 投资 虎符 Hoo

天翼云高可用虚拟IP(HAVIP)实践

天翼云开发者社区

[Day43]-[回溯]-解数独

方勇(gopher)

LeetCode 数据结构算法

JVM进阶(十六)——JAVA 双亲委派模型

No Silver Bullet

类加载 双亲委派模型 5月月更

netty系列之:在netty中使用native传输协议

程序那些事

Java Netty 程序那些事 5月月更

druid 源码阅读 9—— init 中的JMX是干啥的

张大彪

零基础学Java第三节(基本输入输出)

编程攻略

java开发学习

阿里云张新涛:异构计算为数字经济提供澎湃动力

阿里云弹性计算

XR 元宇宙 视觉计算

在线文本代码对比工具

入门小站

工具

css 学习笔记【三】浮动,不脱离文档流,继承和层叠

恒山其若陋兮

5月月更

druid源码阅读(十)Druid keepAlive参数

爱晒太阳的大白

5月月更

六、云原生可观测性

穿过生命散发芬芳

可观测性 5月月更

M-DAO开辟区块链全新战场,或成DAO赛道龙头

BlockChain先知

Redis「8」实现分布式限流与延时队列

Samson

redis 学习笔记 5月月更

小红书信息流推荐多样性解决方案

小红书技术REDtech

推荐 SSD 多样性 KDD

SPDK QOS机制解析

天翼云开发者社区

时序数据库在桥梁监测领域中的应用

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

M-DAO开辟区块链全新战场,或成DAO赛道龙头

小哈区块

linux之sed使用技巧

入门小站

Linux

使用 Provider 改造屎山代码,代码量降低了2/3!

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

Notification发送消息

空城机

WebApi 5月月更

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