Angular 2中EventEmitter.next()和EventEmitter.emit()之间的区别

时间:2016-03-07 09:51:30

标签: angular angular2-services

EventEmitter.emit()EventEmitter.next()之间有什么区别?两者都将事件分派给订阅的侦听器。

export class MyService {
  @Output() someEvent$: EventEmitter<any> = new EventEmitter();

  someFunc() {
   this.someEvent$.emit({myObj: true});

   this.someEvent$.next({myObj: true});
  }
}

documenation for the EventEmitter目前不太有用。

2 个答案:

答案 0 :(得分:88)

答案 1 :(得分:3)

在最新版本(Ng9)中,event_emitter.ts的源代码如下:

export class EventEmitter<T extends any> extends Subject<T> {
  /**
   * Emits an event containing a given value.
   * @param value The value to emit.
   */
  emit(value?: T) { super.next(value); }
}

EventEmitter从父类Subject扩展。如您所料,emit方法调用super.next()