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 相关文章推荐
用jQuery实现检测浏览器及版本的脚本代码
Jan 22 Javascript
Javascript数组的排序 sort()方法和reverse()方法
Jun 04 Javascript
JS 仿腾讯发表微博的效果代码
Dec 25 Javascript
JS实现可拖曳、可关闭的弹窗效果
Sep 26 Javascript
轻松学习Javascript闭包
Mar 01 Javascript
AngularJS实现根据不同条件显示不同控件
Apr 20 Javascript
vue-cli webpack 开发环境跨域详解
May 18 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
Aug 22 Javascript
微信小程序实现手指触摸画板
Jul 09 Javascript
spring+angular实现导出excel的实现代码
Feb 27 Javascript
vue中 v-for循环的用法详解
Feb 19 Javascript
vue-video-player 断点续播的实现
Feb 01 Vue.js
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你的验证码安全码?
2007/01/02 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
python创建和使用字典实例详解
2013/11/01 Python
详解Python爬虫的基本写法
2016/01/08 Python
Django中的Signal代码详解
2018/02/05 Python
python+opencv识别图片中的圆形
2020/03/25 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
局域网定义和特性
2016/01/23 面试题
opencv实现图像平移效果
2021/03/24 Python
自主招生自荐信格式
2013/12/03 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书