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 相关文章推荐
在textarea文本域中显示HTML代码的方法
Mar 06 Javascript
InnerHtml和InnerText的区别分析
Mar 13 Javascript
JS比较两个时间大小的简单示例代码
Dec 20 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
Feb 26 Javascript
JavaScript实现图片DIV竖向滑动的方法
Apr 25 Javascript
浅谈javascript:两种注释,声明变量,定义函数
Oct 05 Javascript
JS实现滑动门效果的方法详解
Dec 19 Javascript
node.js中cluster的使用教程
Jun 09 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
Sep 10 Javascript
原生JS实现ajax与ajax的跨域请求实例
Dec 01 Javascript
Node.js使用Angular简单示例
May 11 Javascript
详解Typescript里的This的使用方法
Jan 08 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代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
2016/03/17 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
JavaScript 学习技巧
2010/02/17 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
2013/08/02 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
vue检测对象和数组的变化分析
2018/06/30 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python实现建立SSH连接的方法
2015/06/03 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
python机器学习库xgboost的使用
2020/01/20 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
接口可以包含哪些成员
2012/09/30 面试题
禁止酒驾标语
2014/06/25 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
陕西导游词
2015/02/04 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android
Python绘画好看的星空图
2022/03/17 Python
python读取mat文件生成h5文件的实现
2022/07/15 Python