Angular中的事件数组

Riy*_*Riy 2 angular angular5

我正在为我的项目使用角度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)

如果我们可以,那么我们如何做到这一点,以及我们如何在父组件上监听该事件?

Ric*_*rdo 5

您可以尝试使用另一种方法来解决您的问题,例如,您可以以描述您正在执行的操作类型的方式重构输出事件数据

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)