Angular4学习笔记(六)- Input和Output

概述

Angular中的输入输出是通过注解@Input@Output来标识,它位于组件控制器的属性上方。
输入输出针对的对象是父子组件。

演示

Input

  • 新建项目connInComponents:ng new connInComponents.
  • 新增组件stock:ng g component stock.
  • stock.component.ts中新增属性stockName并将其标记为输入@Input():
  @Input()protected stockName: string;
  • 既然有@Input()则应有对应的父组件,此处使用默认生成的主组件app.
    在父组件中定义属性keyWork并通过视图文件app.component.html中的标签<input>来进行双向绑定,最后,在视图文件app.component.html中嵌入子组件并进行赋值:
//ts
protected keyWord: string;//html
<input placeholder="请输入股票名称" [(ngModel)]="keyWord">
<app-stock [stockName]="keyWord"></app-stock>

注意,[(ngModel)]需要在app.module.ts中引入模块FormsModule
这样就完成了父组件向子组件赋值的操作了。

  • 在子组件中进行展示
<p>stock works!
</p>
<div>股票名称:{{stockName}}
</div>

Output

Output的赋值操作不像Input那样简单,它需要通过位于@angular/core包下的EventEmitter对象来监听并处理数据。并且需要传入泛型类来规定参数类型。

需求

在父子组件中各自定义一个表示股票价格的属性,并通过Output将子组件中的价格信息传给父组件。

  • 由于EventEmitter需要传入泛型类,因此我们首先定义一个股票信息类:
export class StockInfo {constructor(public name: string, public price: number) {this.name = name;this.price = price;}
}
  • 在子组件stock.component.ts中新增属性stockPriceevent,并在初始化方法中为stockPrice赋值并通过event将当前绑定对象发射出去:
  protected stockPrice: number;@Output()protected event: EventEmitter<StockInfo> = new EventEmitter();ngOnInit() {setInterval(() => {const stock: StockInfo = new StockInfo(this.stockName, 100 * Math.random());this.stockPrice = stock.price;this.event.emit(stock);}, 3000);}

此时子组件的发射动作已完成,那么如何接收发射的数据呢?

  • 在父组件中定义价格属性currentPrice和接收方法eventHandler
  protected currentPrice: number;eventHandler(stock: StockInfo) {this.currentPrice = stock.price;}
  • 在嵌入的子组件视图元素<app-stock>上添加绑定关系:
<app-stock [stockName]="keyWord" (event)="eventHandler($event)"></app-stock>

其中event对应子组件属性,eventHandler对应父组件接收并处理子组件传来的方法,$event代表泛型类参数,此处是一个类型为StockInfo的实例。

此时赋值操作已经完成,在父子组件的视图文件中添加显示接收到的信息(股票价格)即可:
stock.component.html

<div>股票名称:{{stockName}}<br>当前价格:{{stockPrice | number:'2.1-2'}}
</div>

app.component.html

<div>股票名称:{{keyWord}}<br>当前价格:{{currentPrice | number:'2.1-2'}}
</div>

tips

@Output可以传递参数,其值与嵌入的子组件视图元素<app-stock>上绑定的数据名称统一。
@Output('lastPrice'),那么

<app-stock [stockName]="keyWord" (event)="eventHandler($event)"></app-stock>

相应改为:

<app-stock [stockName]="keyWord" (lastPrice)="eventHandler($event)"></app-stock>

效果

871373-20171101223315326-38555216.png

Demo

下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 常见加密方式和实现

Python 加密与解密小结 这篇文章主要介绍了Python 加密与解密,使用base64或pycrypto模块 前言 据记载&#xff0c;公元前400年&#xff0c;古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间&#xff0c;德国军方启用“恩尼格玛”密码机…

jenkins日志乱码linux,Jenkins控制台中乱码问题解决

由于服务器环境及应用层各版本的不同、编码方式的不同因此会有很多种情况会出现乱码问题。由于Jenkins中的job运行的是独立的一个shell环境&#xff0c;许多的环境变量与服务器中是不一样的&#xff0c;因此在job中执行的命令也就会有所差异。因此可以在job中执行env命令&#…

13,反转链表《剑指offer》

题目&#xff1a; 输入一个链表&#xff0c;反转链表后&#xff0c;输出链表的所有元素。 思路&#xff1a; 反转链表&#xff0c;对于片段 1--->2--->3循环操作&#xff1b; 要反转链表需要两步&#xff1a; 一&#xff0c;将2->next指向1 &#xff08;如果不保存3那…

什么是面试的关键?资深HR告诉你!

求职指南、面试宝典、应聘手册……到任何一个书店去转转&#xff0c;总能发现一两本这样的书&#xff0c;有关面试应聘的包装技巧实在太多&#xff0c;既让应聘者眼花缭乱、无所适从&#xff0c;也让人事经理头疼&#xff0c;总担心会被应聘者的包装所蒙骗。东方控股集团有限公…

windows商店_Windows记事本应用现在可以从Microsoft Store中获得

早在2019年8月&#xff0c;微软就宣布将把人们最常用的Windows记事本应用搬到应用商店&#xff0c;让这款深受用户喜爱的应用更新速度更快、响应更灵敏。12月晚些时候&#xff0c;微软却放弃了这一计划&#xff0c;也没有给出太多理由。但现在&#xff0c;这一计划已经完成&…

.net core linux 编译,.NET Core 源码编译的问题解析

引言&#xff1a; .NET Core 源码编译https://github.com/dotnetgit clone https://github.com/dotnet/runtime.git一&#xff1a;Windows 编译VS 2019 16.6(不要安装预览版)Win 10 专业版&#xff0c;最新版本 (1903/2004)长路径支持&#xff1a;组策略(gpedit.msc) > 计算…

jmeter 压测duobbo接口,施压客户端自己把自己压死了

jmeter 压测duobbo接口&#xff0c;jmeter代码不合理&#xff0c;导致每执行一次请求&#xff0c;会调用一次消耗内存的实例化。导致越压越慢&#xff0c;请求发不出去。这个时候需要考虑修改代码了。 截图中&#xff0c;tps越来越少。 原来初始化的代码放在 runTest中执行。修…

oracle pl/sql 包

包用于在逻辑上组合过程和函数&#xff0c;它由包规范和包体两部分组成。1)、我们可以使用create package命令来创建包&#xff0c;如&#xff1a;i、创建一个包sp_packageii、声明该包有一个过程update_saliii、声明该包有一个函数annual_income --声明该包有一个存储过程和一…

MySQL 之 explain

explain 介绍 explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。简单讲&#xff0c;它的作用就是分析查询性能。explain 查询SQL - 用于显示SQL执行信息参数&#xff0c;根据参考信息可以进行SQL优化 示例&#x…

[置顶]微软面试智力题

这个笑话反映了两个公司不同的企业文化。很多人都知道微软的企业文化是宽松和自由&#xff0c;给员工一个充分发挥创造力的空间&#xff0c;这也是微软能吸引很多人才的原因之一。但是&#xff0c;要想进微软工作可不容易&#xff0c;微软在招聘工作上一点也不马虎&#xff0c;…

背单词软件 单词风暴 分享id_周一考研高效背单词系列(一):利用单词软件如何背好单词...

高效背单词考研单词作为考研路上的第一大难关&#xff0c;相信很多小伙伴都在这上面吃过不少苦&#xff0c;有同学更是看到密密麻麻的大纲词汇就头疼&#xff0c;但只要是学习就是有方法的&#xff0c;今天&#xff0c;我们开始推出高效背单词系列——墨墨背单词。另&#xff1…

linux c++ 编译 库,LINUX C/C++ 编译库关系

在LINUX 下安装个啥,都要涉及到编译,尤其是开源软件. 那么编译就涉及到C/C 和对应的库. 我们理一理之间的关系有助于MYSQL8源码编译libc glibc libc libstdc eglibc GCC G CMakeGDB从libc说起。libc是Linux下原来的标准C库&#xff0c;也就是当初写hello world时包含的头文件#…

Linux_学习_Day3_bash

Shell bash是外部程序&#xff1a;type/whichis bash。 shell&#xff0c; 子shell。可以利用bash打开另一个bash。即打开一个子shell。并且每个进程是独立存在的。对于子shell而言&#xff0c;bash并不认知其他bash的存在。 执行了多次bash&#xff0c;要退出只需exit。用pst…

mysql 之 优化 (收集于网络)

&#xff08;以下内容均来自于网络&#xff0c;如果有版权限制&#xff0c;请联系我0.0&#xff09; Mysql存储千亿级的数据&#xff0c;是一项非常大的挑战。Mysql单表可以存储10亿级的数据&#xff0c;只是这个时候性能非常差&#xff0c;项目中大量的实验证明&#xff0c;M…

hadoop-09-安装资源上传

hadoop-09-安装资源上传 在/software/www/html 下面上传 ambari HDP HDP-UTILS-1.1.0.21 文件&#xff0c;之后解压&#xff1b;

easyui 收费_收费班长喻玉华三尺岗亭献青春

- 2020 第四期 人物访谈报道 -拼搏人生最美励志先锋人物专访2013年&#xff0c;22岁的她来到巴南高速这个大家庭中&#xff0c;成为恩阳收费站一名普通的收费员。怀着对事业的执着追求与热爱&#xff0c;经过两年不懈的努力&#xff0c;获得了领导和同事的认可和喜爱。2015年5月…

编程技术面试的五大要点

&#xff08;写在前面的话&#xff1a;本文最初发表于《程序员》杂志2011年10月刊&#xff0c;并收录到《剑指Offer——名企面试官精讲典型编程题》一书中。&#xff09; 近年来找工作一直是一个很热门的话题。我们要想找到心仪的工作&#xff0c;难免需要经过很多轮面试。编程…

访问linux服务主机,如何把Linux配置为日志服务主机。

如网络设备很多&#xff0c;可把同类的设备配置为相同的设备号例&#xff1a;more switch.log | grep X.X.X.X //查看某一设备的日志审核和记录系统的事件是非常重要的。如果仅仅把系统事件作为日志记录下来&#xff0c;而不去查看&#xff0c;还是无济于事。可用webadmin管理和…

WSARecv() 函数使用解析

详情参考&#xff1a;https://msdn.microsoft.com/en-us/library/windows/desktop/ms741688(vvs.85).aspx 简述 The WSARecv function receives data from a connected socket or a bound connectionless socket. The WSARecv function provides some additional features comp…

获取 docker 容器(container)的 ip 地址

获取单个IP docker inspect --format {{ .NetworkSettings.IPAddress }} <container-ID> 获取所有容器IP docker inspect -f {{.Name}} - {{.NetworkSettings.IPAddress }} $(docker ps -aq)转载于:https://www.cnblogs.com/Tempted/p/7774789.html