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 相关文章推荐
由JavaScript中call()方法引发的对面向对象继承机制call的思考
Sep 12 Javascript
JS实现遮罩层效果的简单实例
Nov 12 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
Dec 01 Javascript
js实现仿Windows风格选项卡和按钮效果实例
May 13 Javascript
javascript设计简单的秒表计时器
Sep 05 Javascript
js实现仿qq消息的弹出窗效果
Jan 06 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
Jun 06 Javascript
JS 获取HTML标签内的子节点的方法
Sep 21 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
Jan 11 Javascript
Vue2.0 实现单选互斥的方法
Apr 13 Javascript
JavaScript经典案例之简易计算器
Aug 24 Javascript
vue使用video插件vue-video-player详解
Oct 23 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
第三节 定义一个类 [3]
2006/10/09 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
2013/04/24 PHP
PHP系统命令函数使用分析
2013/07/05 PHP
详解HTTP Cookie状态管理机制
2016/01/14 PHP
PHP实现带进度条的Ajax文件上传功能示例
2019/07/02 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
python实现定制交互式命令行的方法
2014/07/03 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
蔻驰法国官网:COACH法国
2018/11/14 全球购物
法律专业个人实习自我鉴定
2013/09/23 职场文书
教研活动总结
2014/04/28 职场文书
三八活动策划方案
2014/08/17 职场文书
百家讲坛观后感
2015/06/12 职场文书
病假条格式范文
2015/08/17 职场文书
分析Python list操作为什么会错误
2021/11/17 Python