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网络游戏-(模拟城市webgame)提供的一些例子下载
Oct 14 Javascript
jQuery创建自己的插件(自定义插件)的方法
Jun 10 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
Jul 22 Javascript
js 创建快捷方式的代码(fso)
Nov 19 Javascript
ko knockoutjs动态属性绑定技巧应用
Nov 14 Javascript
jquery 实现上下滚动效果示例代码
Aug 09 Javascript
Javascript操作dom对象之select全面解析
Apr 24 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
May 25 Javascript
Angular开发实践之服务端渲染
Mar 29 Javascript
过滤器vue.filters的使用方法实现
Sep 18 Javascript
BootStrap前端框架使用方法详解
Feb 26 Javascript
jquery实现图片放大镜效果
Dec 23 jQuery
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设计模式之装饰者模式
2012/02/29 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
vue.js路由跳转详解
2017/08/28 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
总结Python编程中函数的使用要点
2016/03/20 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
python numpy元素的区间查找方法
2018/11/14 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
Python解析微信dat文件的方法
2020/11/30 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
初中班级口号
2014/06/09 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
门面房租房协议书
2014/08/20 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
MySQL之DML语言
2021/04/05 MySQL
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏