angular2 ng2 @input和@output理解及示例


Posted in Javascript onOctober 10, 2017

angular2 @input和@output理解

先做个比方,然后奉上代码

比如:

<talk-cmp [talk]="someExp" (rate)="eventHandler($event.rating)">

input, [talk]="someExp" 这个标签可以理解为一个专门的监听器,监听父组件传递过来的someExp参数,并存入自身组件的talk变;好像是开了个后门,允许且只允许父组件的someExp进入,一旦进入立刻抓进一个叫talk的牢房,然后子组件中就可以通过@Input来定义这个变量talk然后使用它。

output ,(click)="eventHandler($event.rating) 这个意思是, 当子组件的click事件被触发,就执行父组件的eventHandler函数,并把子组件的参数$event.rating传递给父组件的eventHandler函数;就好像,当小孩子一哭(执行click事件),他的母亲立刻把他抱在怀里(执行母亲的eventHandler),同时母亲获得了小孩子的一些参数($event.rating)

1、@input()

父组件 father.component.ts 提供数据

import {Component} from "@angular/core";
@Component({
  selector: "my-father",
  templateUrl: "father.html"
})
export class FatherComponent {
  data: Array<Object>;
  constructor() {
    this.data = [
      {
        "id": 1,
        "name": "html"
      },
      {
        "id": 2,
        "name": "css"
      },
      {
        "id": 3,
        "name": "angular"
      },
      {
        "id": 4,
        "name": "ionic"
      },
      {
        "id": 5,
        "name": "node"
      }
    ]
  }
}

模板文件 father.html

<h1>父组件</h1>
// 包含子组件, 并使用属性传递数据过去
<my-child [info]="data"></my-child>

子组件 child.component.ts 获取数据

import {Component, Input} from "@angular/core";
@Component({
  selector: "my-child",
  templateUrl: "child.html"
})
export class ChildComponent {  
  // 使用@Input获取传递过来的数据
  @Input()
  info: Array<Object>;
  constructor() {
  
  }
}

子组件 child.html模板文件

<ul>
  <li *ngFor="let item of info">
    {{item.name}}
  </li>
</ul>

2、@Output()

子组件three-link.component.ts

1. 引入

import {Component, OnInit, Output, EventEmitter} from "@angular/core";

2. 定义输出变量

export class ThreeLinkComponent {
  province: string;
  // 输出一下参数
  @Output() provinceOut = new EventEmitter();  
  constructor() {
    this.province = "陕西";
  } 
}

3. 事件出发,发射变量给父组件

provinceChange() {
  // 选择省份的时候发射省份给父组件
  this.provinceOut.emit(this.province);
}

父组件模板

<!--三级联动组件-->
<three-link (provinceOut)="recPro($event)"></three-link>

父组件

// 函数接受子函数传递过来的变量, 子函数中emit的时候触发这个函数。
recPro(event) {
  this.province = event;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 表单的友好用户体现
Jan 07 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
Jun 04 Javascript
JavaScript里四舍五入函数round用法实例
Apr 06 Javascript
jQuery中extend函数详解
Jul 13 Javascript
jquery中val()方法是从最后一个选项往前读取的
Sep 06 Javascript
jquery实现简单的瀑布流布局
Dec 11 Javascript
Angular4 组件通讯方法大全(推荐)
Jul 12 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
Jul 23 Javascript
详解Vue2.5+迁移至Typescript指南
Aug 01 Javascript
详解webpack引用jquery(第三方模块)的三种办法
Aug 21 jQuery
js实现多个标题吸顶效果
Jan 08 Javascript
解决vue addRoutes不生效问题
Aug 04 Javascript
ionic选择多张图片上传的示例代码
Oct 10 #Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
Oct 10 #Javascript
防止页面url缓存中ajax中post请求的处理方法
Oct 10 #Javascript
Vue实现数字输入框中分割手机号码的示例
Oct 10 #Javascript
JS判断数组那点事
Oct 10 #Javascript
template.js前端模板引擎使用详解
Oct 10 #Javascript
AngularJS中table表格基本操作示例
Oct 10 #Javascript
You might like
让你的PHP同时支持GIF、png、JPEG
2006/10/09 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
网页javascript精华代码集
2007/01/24 Javascript
学习ExtJS TextField常用方法
2009/10/07 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
JS中的三个循环小结
2017/06/20 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
python将字符串转换成数组的方法
2015/04/29 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
Python面试题集
2012/03/08 面试题
党校自我鉴定范文
2013/10/02 职场文书
工程预算与管理应届生求职信
2013/10/06 职场文书
中专生职业生涯规划书范文
2014/01/10 职场文书
新学期班主任寄语
2014/01/18 职场文书
法律进机关实施方案
2014/03/12 职场文书
老兵退伍标语
2014/10/07 职场文书
大客户经理岗位职责
2015/04/09 职场文书
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
浅谈如何保证Mysql主从一致
2022/03/13 MySQL