写点什么

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

评论

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

Mac电脑专业系统监控工具System Dashboard Pro for Mac激活版

小玖_苹果Mac软件

AI技术实现口语练习功能

北京木奇移动技术有限公司

AI技术 软件外包公司 口语学习

接龙活动管理系统(源码+文档+部署+讲解)

深圳亥时科技

【iPhone解锁神器】AnyMP4 iPhone Unlocker:一键解锁,轻松恢复

理理

Mac电脑网络检测工具箱Network Kit for Mac激活版

小玖_苹果Mac软件

房产经纪人管理系统(源码+文档+部署+讲解)

深圳亥时科技

远程操控新体验!Apple Remote Desktop让Mac管理更便捷、更高效!

理理

iZotope RX 11 for Mac(专业音频修复软件)v11.2.0激活版

理理

如何设计一个注册中心?以Zookeeper为例

EquatorCoco

分布式 云原生

化工巨头的选择:惠生工程如何用DolphinScheduler点燃数据集成新火花

白鲸开源

案例 能源 Apache DolphinScheduler 大数据调度 惠生工程

Mac电脑磁盘清理工具Magic Disk Cleaner for Mac激活版

小玖_苹果Mac软件

白鲸数据集成和调度系统与统信软件通过互认认证,共促国产软硬件生态发展

白鲸开源

大数据 统信软件 统信操作系统 白鲸开源 WhaleStudio

数智合同 | 政策导向与合规监管加强背景下企业合同管理的强化需求

用友智能财务

白皮书 会计

o3 发布了,摔碎了码农的饭碗

不在线第一只蜗牛

架构

Messari 2024 年行业总结及 2025 年趋势预测

TechubNews

DePIN

FonePaw Data Recovery for Mac(数据恢复)v3.7.0激活版

理理

coconutBattery Plus for Mac(电池质量检测工具)4.0.0 直装版

理理

Navicat for MySQL Mac(数据库管理开发工具)v16.3.4汉化版

理理

SecureCRT & SecureFX 9.6.1 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输

sysin

securecrt

Mac 磁盘清理与系统优化OS Cleaner Pro - Disk Cleaner激活版

小玖_苹果Mac软件

PDF Squeezer for Mac(强大的PDF文件压缩工具)v4.5.3免激活版

理理

Qualcomm QCN9274 & QCN6274 Wireless Modules: WiFi 7, Dual-Band, 22 dBm Power, 5765 Mbps Speed

wallyslilly

qcn9274 qcn6274

【Mac生产力神器】Magnet Pro:智能分屏,高效工作新体验!

理理

TikTok直播是否必须选择专线?能否自行搭建?

Ogcloud

海外直播专线 直播专线 tiktok直播 tiktok直播专线 tiktok直播网络

Red Giant Magic Bullet Looks for Mac(looks调色插件)v5.0.3激活版

理理

AI对开发过程的替代性

快乐非自愿限量之名

人工智能 AI

BOE(京东方)联手故宫再度打造沉浸式数字展 引领数字艺术文化新篇章

爱极客侠

TikTok直播如何选择合适的海外直播专线?

Ogcloud

TikTok 直播专线 tiktok直播 tiktok直播专线 tiktok直播网络

Mac上最好用的压缩解压软件 Keka中文破解版

理理

终端SSH仿真工具 SecureCRT for mac永久激活版

理理

苹果电脑强大清理优化工具Ghost Buster Pro for Mac激活版

小玖_苹果Mac软件

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