Angular4的输入属性与输出属性实例详解


Posted in Javascript onNovember 29, 2017

本文实例讲述了Angular4的输入属性与输出属性。分享给大家供大家参考,具体如下:

Angular4输入属性

输入属性通常用于父组件向子组件传递信息

举个栗子:我们在父组件向子组件传递股票代码,这里的子组件我们叫它app-order

首先在app.order.component.ts中声明需要由父组件传递进来的值

order.component.ts

...
@Input()
stockCode: string
@Input()
amount: string
...

order.component.html

<p>这里是子组件</p>
<p>股票代码为{{stockCode}}</p>
<p>股票总数为{{amount}}</p>

然后我们需要在父组件(app.component)中向子组件传值

app.component.ts

...
stock: string
...

app.component.html

<input type="text" placeholder="请输入股票代码" [(ngModel)]="stock">
<app-order [stockCode]="stock" [amount]="100"></app-order>

这里我们使用了Angular的双向数据绑定,将用户输入的值和控制器中的stock进行绑定。然后传递给子组件,子组件接收后在页面显示。

Angular4输出属性

当子组件需要向父组件传递信息时需要用到输出属性。

举个栗子:当我们从股票交易所获得股票的实时价格时,希望外部也可以得到这个信息。为了方便,这里的实时股票价格我们通过一个随机数来模拟。这里的子组件我们叫它app.price.quote

使用EventEmitter从子组件向外发射事件

price.quote.ts

export class PriceQuoteComponent implements OnInit{
 stockCode: string = 'IBM';
 price: number;
 //使用EventEmitter发射事件
 //泛型是指往外发射的事件是什么类型
 //priceChange为事件名称
 @Output()
 priceChange:EventEmitter<PriceQuote> = new EventEmitter();
 constructor(){
  setInterval(() => {
   let priceQuote = new PriceQuote(this.stockCode, 100*Math.random());
   this.price = priceQuote.lastPrice;
   //发射事件
   this.priceChange.emit(priceQuote);
  })
 }
 ngInit(){
 }
}
//股票信息类
//stockCode为股票代码,lastPrice为股票价格
export class PriceQuote{
 constructor(public stockCode:string,
    public lastPrice:number
 )
}

price.quote.html

<p>
 这里是报价组件
</p>
<p>
 股票代码是{{stockCode}}
</p>
<p>
 股票价格是{{price | number:'2.2-2'}}
</p>

接着我们在父组件中接收事件

app.component.html

<app-price-quote (priceChange)="priceQuoteHandler($event)"></app-price-quote>
<div>
 这是在报价组件外, 股票代码是{{priceQuote.stokcCode}},
 股票价格是{{priceQuote.lastPrice | number:'2.2-2'}}
</div>

事件绑定和原生的事件绑定是一样的,都是将事件名称放在()中。

app.component.ts

export class AppComponent{
 priceQuote:PriceQuote = new PriceQuote('', 0);
 priceQuoteHandler(event:PriceQuote){
  this.priceQuote = event;
 }
}

这里的event类型就是子组件传递事件的类型。

简单的说,就是子组件通过emit发射事件priceChange,并将值传递出来,父组件在使用子组件时会触发priceChange事件,接收到值。

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
onbeforeunload与onunload事件异同点总结
Jun 24 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
Jun 06 Javascript
wap图片滚动特效无css3元素纯js脚本编写
Aug 22 Javascript
javascript中call apply 的应用场景
Apr 16 Javascript
jquery淡入淡出效果简单实例
Jan 14 Javascript
Vue常用指令V-model用法
Mar 08 Javascript
JavaScript实现职责链模式概述
Jan 25 Javascript
如何从零开始利用js手写一个Promise库详解
Apr 19 Javascript
React Router V4使用指南(精讲)
Sep 17 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
Oct 29 Javascript
es6基础学习之解构赋值
Dec 10 Javascript
Next.js实现react服务器端渲染的方法示例
Jan 06 Javascript
node.js中axios使用心得总结
Nov 29 #Javascript
Vue2.0用户权限控制解决方案
Nov 29 #Javascript
vue.js项目中实用的小技巧汇总
Nov 29 #Javascript
关于 angularJS的一些用法
Nov 29 #Javascript
ReactNative之FlatList的具体使用方法
Nov 29 #Javascript
ReactNative 之FlatList使用及踩坑封装总结
Nov 29 #Javascript
jQuery图片加载失败替换默认图片方法汇总
Nov 29 #jQuery
You might like
php 静态变量的初始化
2009/11/15 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
element中的$confirm的使用
2020/04/26 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
python同时给两个收件人发送邮件的方法
2015/04/30 Python
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
python实现图片转字符小工具
2019/04/30 Python
python实现动态数组的示例代码
2019/07/15 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
python中upper是做什么用的
2020/07/20 Python
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
网络技术专业求职信
2014/02/18 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
上课迟到检讨书300字
2014/10/15 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技
netty 实现tomcat的示例代码
2022/06/05 Servers