Angular2父子组件之间数据传递:@Input和@Output (上)

为了让大家学习起来轻松、易懂,小编尽量做到篇幅短,语言通俗易懂,知识点分段来讲,以免太长了看起来很累,也很容易失去耐心阅读下去,希望大家理解和支持,同时希望大家点赞和分享出去,让更多的志同道合的朋友来学习


Angular 提供了@Input和@Output语法来处理组件数据的流入流出,接下来我们通过@Input和@Output来演示父子组建之间的数据传递


父组件向子组件传递数据

父组件传递数据到子组件通过@Input方式的现实方式

第一步:定义父组件
ParentComponent.ts(父组件)

import {Component, OnInit} from '@angular/core';

@Component({
selector: 'app-parent',
 
templateUrl: './parent.component.html',
 
styleUrls: ['./parent.component.css']
})

export class ParentComponent {

private user: Object = {
name: '',
   
age: '',
   
number: ''
 
};
 
private parent_data: any;

 
next() {
this.parent_data = this.user;
 
}

}

(1).这里定义了两个类属性user和parent_data,

(2).一个next()方法,next方法用于将页面输入的数据赋值给parent_data属性


ParentComponent.html(父组件模版)

<div class="parent_div">
 <p>
父组件</p>
 <div>
   <label>
姓名:</label>
   <input
type="text" [(ngModel)]="user.name">
 </div>
 <div>
   <label>
年龄:</label>
   <input
type="text" [(ngModel)]="user.age">
 </div>
 <div>
   <label>
电话:</label>
   <input
type="text" [(ngModel)]="user.number">
   <input
type="button" value="传递数据到子组件" (click)="next()">
 </div>

 
<!---子组件指令 start-->
 
<app-childen [data]="parent_data"></app-childen>
 
<!---子组件指令 end-->
</div>

对应的页面:


表单输入数据,点击页面上的按钮,调用页面next()方法

(click)="next()"

next()方法内部将输入的数据user赋值给parent_data。parent_data获取到数据之后在模版中把获取到的值再赋给子组件中先前定义好的data变量


<!---子组件指令 start-->
<app-childen [data]="parent_data"></app-childen>
<!---子组件指令 end-->

到这里父组件就完成 类数据的传递,下面我们看看子组件怎么去接受这个值?


第二步:定义子组件:
ChildenComponent.ts(子组件)

import {Component, OnChanges, Input} from '@angular/core';

@Component({
selector: 'app-childen',
 
templateUrl: './childen.component.html',
 
styleUrls: ['./childen.component.css']
})
export class ChildenComponent implements OnChanges {
@Input() data: string;

 
ngOnChanges() {
console.log(this.data);
 
}
}

(1).这里定义了一个类属性data,并且用@Input装饰器修饰,修饰过后的data变量就具备接受父组件传过来的数据了,这里定义的data就是在页面接收父组件传递的data变量,看下面代码

<app-childen [data]="parent_data"></app-childen>

(2).还实现了一个onChanges接口,onChanges接口必须实现ngOnChanges方法,用来监控数据的变化,如果父组件的数据发生变化,我们这里就输出改变后的数据,父组件中表单输入的值发生变化,再点击按钮调用next()方法,ngonChanges会检测到数据变化,console.log(this.data)打印新的输出到控制台


下面我们看看效果



 


个人学习心得,大神路过 ,不喜勿喷
有问题加我微信提问或者留言


  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值