117

What is the difference between EventEmitter.emit() and EventEmitter.next()? Both dispatching the event to the subscribed listeners.

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

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

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

The documenation for the EventEmitter is not so helpful at the moment.

Holger Stitz
  • 1,601
  • 3
  • 14
  • 19

2 Answers2

141

They do the same. emit() is the current version, next() is deprecated.

See also https://github.com/angular/angular/blob/b5b6ece65a96f5b8f134ad4899b56bf84afe3ba0/modules/angular2/src/facade/async.dart#L49

Günter Zöchbauer
  • 490,478
  • 163
  • 1,733
  • 1,404
6

In the latest version(Ng9), the source code of event_emitter.ts goes as following:

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 extends from parent class Subject. And emit method call super.next() as you may expected.

Chris Bao
  • 1,621
  • 5
  • 26
  • 45