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 attachEvent传递参数的办法
Dec 14 Javascript
第一个JavaScript入门基础 document.write输出
Feb 22 Javascript
javascript学习笔记(十二) RegExp类型介绍
Jun 20 Javascript
js+csss实现的一个带复选框的下拉框
Sep 29 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
Sep 04 Javascript
jQuery设计思想
Mar 07 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
Mar 21 Javascript
解决layui中的form表单与button的点击事件冲突问题
Aug 15 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
Apr 29 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
May 07 Javascript
小程序最新获取用户昵称和头像的方法总结
Sep 23 Javascript
解决layui table表单提示数据接口请求异常的问题
Sep 24 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下载CSS文件中的图片的代码
2013/09/24 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
javascript实现密码验证
2015/11/10 Javascript
详解js图片轮播效果实现原理
2015/12/17 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
BootStrap中
2016/12/10 Javascript
树结构之JavaScript
2017/01/24 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
Python 开发Activex组件方法
2009/11/08 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
python os模块在系统管理中的应用
2020/06/22 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
成品仓管员岗位职责
2013/12/11 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
典型事迹材料范文
2014/12/29 职场文书
违纪检讨书
2015/01/27 职场文书
学校党员干部承诺书
2015/05/04 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书