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 输入框数字限制插件
Nov 10 Javascript
javascript中xml操作实现代码
Nov 21 Javascript
JavaScript 盒模型 尺寸深入理解
Dec 31 Javascript
对frameset、frame、iframe的js操作示例代码
Aug 16 Javascript
js拖拽一些常见的思路方法整理
Mar 19 Javascript
使用jquery实现仿百度自动补全特效
Jul 23 Javascript
九种原生js动画效果
Nov 11 Javascript
js简单获取表单中单选按钮值的方法
Aug 23 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
Nov 21 Javascript
详解Vue组件之间的数据通信实例
Jun 17 Javascript
Angular X中使用ngrx的方法详解(附源码)
Jul 10 Javascript
浅谈vue-router 路由传参的方法
Dec 27 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
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
destoon二次开发入门示例
2014/06/20 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
jQuery弹出窗口简单实现代码
2017/03/09 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
Django用户认证系统 User对象解析
2019/08/02 Python
Python处理session的方法整理
2019/08/29 Python
python psutil监控进程实例
2019/12/17 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
python初步实现word2vec操作
2020/06/09 Python
python不同系统中打开方法
2020/06/23 Python
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
金融专业推荐信
2013/11/14 职场文书
策划总监岗位职责
2014/02/16 职场文书
个人租房协议书
2014/04/09 职场文书
支部组织生活会方案
2014/06/10 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
python文件目录操作之os模块
2021/05/08 Python
python 下划线的多种应用场景总结
2021/05/12 Python
Python中request的基本使用解决乱码问题
2022/04/12 Python