【发布时间】:2017-11-15 16:58:04
【问题描述】:
你好,学习 angular 并遇到了 angular 中的 @output 装饰器。在研究了这个主题之后,我仍然很难理解这个概念。
代码示例:
app.component.html:
<app-tutorials(event)="doSomething($event)"></app-tutorials>
app.component.ts:
import { Component} from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
doSomething(event){
alert("being executed");
}
}
tutorial.component.html:
<button (click)="beingClicked($event)"_>click me</button>
tutorial.component.ts:
import { Component, OnInit, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-tutorials',
templateUrl: './tutorials.component.html',
styleUrls: ['./tutorials.component.css']
})
export class TutorialsComponent{
@Output() event = new EventEmitter();
beingClicked(event){
this.event.emit(event);
}
}
我目前的理解是这样的,如果我错了,请纠正我:
-
output用于仅从父组件的子组件传输数据。 - 当按钮被点击时,
beingClicked(event)被触发并通过 $event 的参数传递事件信息。 - 我们可以使用
this.event.emit(event);发出事件,因为我们首先在类的前面使用以下语句实例化了事件:@Output() event = new EventEmitter(); - 现在父组件在app.component.html:
<app-tutorials(event)="doSomething($event)"></app-tutorials>中监听(event) - 当
event从子组件发出时,doSomething($event)函数被触发并传入$event
问题:
- 我目前的理解正确吗?
- 这个 EventEmitter 到底是什么?向上数据是否总是需要它?
【问题讨论】:
标签: javascript angular typescript