最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 22:28:03
文档

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

angular2 ng2 @input和@output理解及示例:angular2 @input和@output理解 先做个比方,然后奉上代码 比如: <talk-cmp [talk]=someExp (rate)=eventHandler($event.rating)> input, [talk]=someExp 这个标签可以理解为一个专门的监听器,监听父组件传递过来的som
推荐度:
导读angular2 ng2 @input和@output理解及示例:angular2 @input和@output理解 先做个比方,然后奉上代码 比如: <talk-cmp [talk]=someExp (rate)=eventHandler($event.rating)> input, [talk]=someExp 这个标签可以理解为一个专门的监听器,监听父组件传递过来的som


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;
}

文档

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

angular2 ng2 @input和@output理解及示例:angular2 @input和@output理解 先做个比方,然后奉上代码 比如: <talk-cmp [talk]=someExp (rate)=eventHandler($event.rating)> input, [talk]=someExp 这个标签可以理解为一个专门的监听器,监听父组件传递过来的som
推荐度:
标签: 理解 input output
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top