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 相关文章推荐
JS OOP包机制,类创建的方法定义
Nov 02 Javascript
JavaScript动态调整TextArea高度的代码
Dec 28 Javascript
javascript的parseFloat()方法精度问题探讨
Nov 26 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
jQuery选择器之基本选择器与层次选择器
Mar 03 Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
Vue 2.x教程之基础API
Mar 06 Javascript
详解写好JS条件语句的5条守则
Feb 28 Javascript
关于Vue中axios的封装实例详解
Oct 20 Javascript
Vue数据双向绑定底层实现原理
Nov 22 Javascript
基于vuex实现购物车功能
Jan 10 Vue.js
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
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
基于PHP的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
PHP针对JSON操作实例分析
2015/01/12 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
php字符集转换
2017/01/23 PHP
php简单中奖算法(实例)
2017/08/15 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
jquery.validate使用攻略 第一部
2010/07/01 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
详解React 16 中的异常处理
2017/07/28 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python3基础之输入和输出实例分析
2014/08/18 Python
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
python super函数使用方法详解
2020/02/14 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
毕业生个人求职自荐信
2014/02/26 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
2014年党建工作总结
2014/11/11 职场文书
家长会欢迎词
2015/01/23 职场文书
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python