您的位置:首页 > 编程语言 > PHP开发

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

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

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)打印新的输出到控制台

下面我们看看效果



 

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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: