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.Encode手动解码技巧
Jul 14 Javascript
js模拟点击事件实现代码
Nov 06 Javascript
通过正则格式化url查询字符串实现代码
Dec 28 Javascript
顶部缓冲下拉菜单导航特效的JS代码
Aug 27 Javascript
js 数值转换为3位逗号分隔的示例代码
Feb 19 Javascript
JavaScript使用Replace进行字符串替换的方法
Apr 14 Javascript
详解JavaScript中Date.UTC()方法的使用
Jun 12 Javascript
Bootstrap导航条学习使用(一)
Feb 08 Javascript
jQuery UI实现动画效果代码分享
Aug 19 jQuery
vue项目动态设置页面title及是否缓存页面的问题
Nov 08 Javascript
详解vue-element Tree树形控件填坑路
Mar 26 Javascript
vue+element模态框中新增模态框和删除功能
Jun 11 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/10/23 PHP
php中使用redis队列操作实例代码
2013/02/07 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
ASP SQL防注入的方法
2008/12/25 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
轻松实现JavaScript图片切换
2016/01/12 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
EsLint入门学习教程
2017/02/17 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
在树莓派2或树莓派B+上安装Python和OpenCV的教程
2015/03/30 Python
Python 如何查找特定类型文件
2020/08/17 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
2014年关于两会精神的心得体会
2014/03/17 职场文书
2015年重阳节主持词
2015/07/04 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书