我正在为我的项目使用角度5.我试图从子组件中发出事件
@Output studentUpdated:EventEmitter<any> = new EventEmitter()
updated(e){
this.studentUpdated.emit(e);
}
Run Code Online (Sandbox Code Playgroud)
并在父组件中列出
<student (studentUpdated)="showSuccess($event)" />
Run Code Online (Sandbox Code Playgroud)
哪个工作如预期.但是在我的学生组件中,我需要实现几个事件.例如保存,更新,删除,确认,预定......等
我在思考而不是每行编写一个事件并单独调用它们,是否有可能我们可以初始化事件数组并根据需要执行它们.例如
@Output() events:EventEmitter<any>[] = []
for(var keyNum in arrayOfEvents)
{
var key = arrayOfEvents[keyNum];
this.events.push(new EventEmitter())
}
Run Code Online (Sandbox Code Playgroud)
然后在某些事件中,我们根据索引发出事件.
this.events[0].emit(e)
Run Code Online (Sandbox Code Playgroud)
如果我们可以,那么我们如何做到这一点,以及我们如何在父组件上监听该事件?
您可以尝试使用另一种方法来解决您的问题,例如,您可以以描述您正在执行的操作类型的方式重构输出事件数据
interface CustomEventData {
kind : string,
value: any
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您将只有eventEmitter输出
@Output action:EventEmitter<any> = new EventEmitter()
updated(e){
this.action.emit({kind "updated", value : e });
}
Run Code Online (Sandbox Code Playgroud)
在您的父组件中,处理事件的函数将根据收到的事件类型做出反应
showSuccess({ kind , value}) {
switch(kind)
case "updated" ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |