Angular2父子组件之间数据传递:@Input和@Output (上)
2017-07-09 17:01
816 查看
为了让大家学习起来轻松、易懂,小编尽量做到篇幅短,语言通俗易懂,知识点分段来讲,以免太长了看起来很累,也很容易失去耐心阅读下去,希望大家理解和支持,同时希望大家点赞和分享出去,让更多的志同道合的朋友来学习
Angular 提供了@Input和@Output语法来处理组件数据的流入流出,接下来我们通过@Input和@Output来演示父子组建之间的数据传递
父组件向子组件传递数据
父组件传递数据到子组件通过@Input方式的现实方式
第一步:定义父组件
ParentComponent.ts(父组件)
(1).这里定义了两个类属性user和parent_data,
(2).一个next()方法,next方法用于将页面输入的数据赋值给parent_data属性
ParentComponent.html(父组件模版)
对应的页面:
表单输入数据,点击页面上的按钮,调用页面next()方法
next()方法内部将输入的数据user赋值给parent_data。parent_data获取到数据之后在模版中把获取到的值再赋给子组件中先前定义好的data变量
到这里父组件就完成 类数据的传递,下面我们看看子组件怎么去接受这个值?
第二步:定义子组件:
ChildenComponent.ts(子组件)
(1).这里定义了一个类属性data,并且用@Input装饰器修饰,修饰过后的data变量就具备接受父组件传过来的数据了,这里定义的data就是在页面接收父组件传递的data变量,看下面代码
(2).还实现了一个onChanges接口,onChanges接口必须实现ngOnChanges方法,用来监控数据的变化,如果父组件的数据发生变化,我们这里就输出改变后的数据,父组件中表单输入的值发生变化,再点击按钮调用next()方法,ngonChanges会检测到数据变化,console.log(this.data)打印新的输出到控制台
下面我们看看效果
个人学习心得,大神路过 ,不喜勿喷
有问题加我微信提问或者留言
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)打印新的输出到控制台
下面我们看看效果
个人学习心得,大神路过 ,不喜勿喷
有问题加我微信提问或者留言
相关文章推荐
- Angular2父子组件之间数据传递:@Input和@Output (下)
- Angular 2父子组件数据传递之@Input和@Output详解 (上)
- Angular2父子组件之间数据传递:@ViewChild获取子组件
- Angular 组件之间数据的传递 之 @Input @Output
- Angular2父子组件之间数据传递:父子组件共享服务通信
- Angular2父子组件之间数据传递:局部变量获取子组件
- angular2 父子组件数据传递之@Input和@Output详解
- Angular2父子组件之间数据传递:父子组件共享服务通信
- Angular 2父子组件数据传递之@Input和@Output详解(下)
- Angular06 组件、模块、父子组件之间的数据传递
- Angular 2父子组件数据传递之局部变量获取子组件其他成员
- vue 父子组件之间的数据传递
- vue.js---父子组件之间简单的数据传递
- Angular 2父子组件数据传递之@ViewChild获取子组件详解
- angular2父子组件的数据传递,父组件向子组件传递数据
- RN中子组件和父组件之间的数据传递问题
- angular2 组件之间通过service互相传递
- Angular 2 父子组件数据通信
- React Native学习笔记之--组件之间数据的传递和跳转
- vue 兄弟组件之间传数据之通过父组件来传递