东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

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

评论

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

互联网流量编排方案

穿过生命散发芬芳

7月月更 流量编排

【函数式编程实战】(三)Lambda表达式原理与函数式接口精讲

小明Java问道之路

Java Lambda 后端 java8 7月月更

沉淀2年的 Jira 自动化经验分享

跟YY哥学Jira

RPA 自动化 Jira

OSI七层模型有哪七层?每一层分别有啥作用,这篇文章讲的明明白白!

wljslmz

OSI七层协议 网络技术 7月月更

Python干货——内置函数

Java学术趴

7月日更

MySQL消息队列表结构

极客土豆

Redis 事务学习有感

恒山其若陋兮

7月月更

来,滑动到下一个小姐姐

岛上码农

flutter ios 前端 安卓开发 7月月更

【K8s入门必看】第二篇 —— 快速部署集群指南

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

QDS08 curl 安装

耳东@Erdong

curl qds 7月月更

【刷题记录】18. 四数之和

WangNing

7月月更

Java基础 ——入坑必读

攻城狮杰森

Java 7月月更

Istio架构扩展机制

阿泽🧸

istio 7月月更

Go 并发编程基础:什么是上下文

宇宙之一粟

并发编程 Go 语言 7月月更

K3S - 轻量级Kubernetes集群

mengzyou

DevOps k8s k3s

项目升级遇到的坑

技术小生

7月月更

教你学c++算法题中最简单的二分,我不允许还有人不会!!!!

KEY.L

7月月更

zookeeper-curator开源框架介绍

zarmnosaj

7月月更

iOS中#define和const

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

百度搜索打击盗版网文站点:互联网内容侵权现象为何屡禁不止

石头IT视角

主题域模型

奔向架构师

数据仓库 7月月更

springboot 项目打包优化(核心 class 与依赖 jar 分离)

安逸的咸鱼

Java maven SpringBoot 2 7月月更

Java多线程之锁优化与JUC常用类

未见花闻

7月月更

谈谈文字两端对齐的css问题

南极一块修炼千年的大冰块

7月月更

Java 虚拟机的概念是怎么来的

HoneyMoose

网络安全之ARP欺骗防护

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

利用Python浅尝算法分析

迷彩

算法复杂度 7月月更 算法分析

思维导图学《On Java》基础卷

Yano

Java

图的存储结构及方法(一)

乔乔

7月月更

Docker 常用命令整合

宁在春

Docker 7月月更

python小知识-python格式化

AIWeker

Python python小知识 7月月更

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