组件间的数据传递方式有很多,这里只介绍几种常用场景下的数据传递方式,以方便初学者学习理解一点组件间数据传递的知识,若有不准确之处,欢迎指正,大神请轻喷,废话不多说了,开整!
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.ts
import { 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.ts
import { 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
更多内容推荐
这是你从未见过的组件库 ---- 手写一款女朋友欲罢不能的 Android- 手绘风格组件
SketchyComponent,一款手绘风格的 Android 组件库。仓库地址:github.com/m-zylab/Ske…
2021-11-07
Vue 组件入门(十三)作用域插槽
之前我们说过,当在父组件中,向子组件中传入模板片段的时候,也就是在插槽编写代码时。我们在插槽内是只能访问父组件作用域内的数据,而无法访问子组件内部的数据。而在某些特殊的业务场景下,我们想同时可以访问父组件和子组件内部的数据。而要实现这种效果
2022-10-23
资料下载
2023-09-28
Android 音视频 - MediaCodec 编解码音视频
MediaCodec 类可用于访问低级媒体编解码器,即编码器/解码器组件。
2021-10-28
使用 RepositoryProvider 简化父子组件的传值
RepositoryProvider 借用Provider 实现了一个组件树上的局部共享对象容器。通过这个容器,为RepositoryProvider的子组件树注入了共享对象,使得子组件可以获取共享对象。通过这种方式避免了组件树的层层传值,使得代码更为简洁和易于维护。
2022-07-05
前端一面必会 react 面试题(附答案)
Refs 是使用 React.createRef() 创建的,并通过 ref 属性附加到 React 元素。在构造组件时,通常将 Refs 分配给实例属性,以便可以在整个组件中引用它们。
2022-12-20
SpringBoot 自动装配原理分析,手写 starter 组件
@SpringBootConfiguration 注解
2021-11-11
介绍 16 个让你的代码变漂亮的属性
大家好,我是小鑫同学。一位从事过Android开发、混合开发,现在长期从事前端开发的编程爱好者,我觉得在编程之路上最重要的是知识的分享,所谓三人行必有我师。所以我开始在社区持续输出我所了解到、学习到、工作中遇到的各种编程知识,欢迎有想法、有同感的
2022-08-20
react-Suspense 工作原理分析
Suspense 目前在 react 中一般配合 lazy 使用,当有一些组件需要动态加载(例如各种插件)时可以利用 lazy 方法来完成。其中 lazy 接受类型为 Promise<() => {default: ReactComponet}> 的参数,并将其包装为 react 组件。ReactComponet 可以是类组件函数组件或
2022-12-12
3. 线性动态规划:打家劫舍、编辑距离
2023-09-27
Spring 系列之 IOC 容器的实例化过程一
上一篇文章我们讲解了spring容器中IOC的容器结构,IOC容器总共有:1.ResourceLoader(资源加载组件)2.Resource(资源描述组件)3.BeanDefinitionReader(bean构建组件)4.BeanDefinition(元数据组件)5.BeanRegister(Bean注册组件)6.BeanFactory(bean容
2023-05-29
类与对象
2022-12-29
秋招!2022 备战金九银十 Java 面试八股文合集 高薪的敲门砖
不知不觉间已经8月啦,金九银十你准备好了吗?
2022-08-20
SpringMVC 源码分析 -HandlerAdapter(5)-SessionAttributesHandler 组件分析
SpringMVC 源码:SessionAttributesHandler 组件源码分析
2021-10-02
课件资料
2023-09-27
9. 可观测性:基于可观测性的服务治理
2023-09-27
25|PPT 常用技巧:蒙版篇之渐变蒙版
2023-09-03
云原生基础组件选型出发点
云原生在落地的过程中需要许多周边组件,每个公司都需要根据自己的实际场景进行组件的选型和整体架构的设计,必要时还要进行一些改造。云原生落地过程中的组件选型可以从场景和需求、组件成熟度、落地成本几个方面出发。
2022-11-26
来自大佬的洗礼! 全网独家的 SpringCloud Alibaba 学习笔记,太全了
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将
2023-06-03
JAVA 面向对象 (七)-- 类的属性和方法详讲
JAVA面向对象(七)--类的属性和方法详讲
2021-06-20
推荐阅读
Vue3 使用小技巧
2023-08-30
程序编译运行时,提示找不到某些组件
2023-09-19
33. 账款催收有哪些技巧和注意事项?
2023-10-17
高性能、高扩展、高稳定:解读 EasyMR 大数据组件自定义可扩展能力
2023-07-26
导师计划带赚钱一对一——玩家经验分享
2023-09-05
13|理论:聚类算法的核心原理
2023-11-27
29.Sentinel 接入 Nacos 案例搭建
2023-09-29
电子书
大厂实战PPT下载
换一换 冯佳时 | 字节跳动 研究科学家,豆包大模型视觉基础研究团队负责人
薛春雨 | 神州信息 新动力数字金融研究院应用基础架构专家
胡宏伟 | 腾讯 腾讯资深产品专家、腾讯移动金融产品负责人
评论