angular2 ng2 @input和@output理解及示例
程序员文章站
2022-06-17 17:02:03
angular2 @input和@output理解
先做个比方,然后奉上代码
比如:
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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Vue实现数字输入框中分割手机号码的示例