50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

【YashanDB知识库】ycm托管数据库时报错OM host ip:127.0.0.1 is not support join to YCM

YashanDB

数据库 yashandb 崖山数据库 YCM

LLM生态下爬虫程序的现状与未来

不在线第一只蜗牛

3D实时云渲染VS本地渲染:哪种渲染方式更划算?

点量实时云渲染

3D 渲染 云渲染 实时云渲染

电商数据集成:利用API接口实现商品详情自动化获取

Noah

高防服务器支持测试功能,让你随时监控网站的安全状态

一只扑棱蛾子

服务器

企业网络需求及适合的解决方案

Ogcloud

SD-WAN MPLS 企业组网 企业网络 SD-WAN组网

捷途山海T2省油王者,续航新篇章

极客天地

什么是域名解析?一文读懂域名解析设置流程和注意事项

防火墙后吃泡面

【论文速读】|大语言模型是零样本模糊测试器:通过大语言模型对深度学习库进行模糊测试

云起无垠

服务器安全堡垒机品牌就选行云管家!

行云管家

网络安全 服务器 数据安全 堡垒机 服务器安全

苹果再失资深设计师,Jony Ive 团队基本离开;OpenAI 或于下周发布 AI 搜索丨 RTE 开发者日报 Vol.201

声网

什么是云原生架构,我们该如何做好云原生安全,引领云计算时代的应用程序革新

德迅云安全杨德俊

爆爽,英语小白怒刷 50 课!像玩游戏一样学习英语~

Immerse

英语 学英语

inBuilder 低代码平台新特性推荐 - 第十八期

inBuilder低代码平台

低代码

一键自动化博客发布工具,用过的人都说好(infoq篇)

程序那些事

工具 自动发布

避免踩坑:盘点导致财务转型失败的因素

智达方通

企业管理

携手鲲鹏昇腾 HashData展现云原生数仓创新力量

酷克数据HashData

准实时数仓搭建指南:以仓储式会员商超为模拟场景

tapdata

物化视图 实时数仓应用场景 仓储式会员店 meshjoin

聊聊微软Power平台

这届南京码农

低代码 SaaS Power Platform

出海企业必备神器:海外云手机的秘密你了解多少?

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 跨境云手机

智慧公厕案例-深圳大梅沙海滨公园

光明源智慧厕所

智慧公厕

服务器托管与租赁的有什么区别

Finovy Cloud

服务器 服务器托管 服务器租

云管平台-助力企业云管理飞跃发展!

行云管家

云计算 云服务 云管平台 云管理

当AI遇见低代码:数智化时代发展新趋势

不在线第一只蜗牛

人工智能 低代码 数智化

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