Diferença entre EventEmitter.next () e EventEmitter.emit () em Angular 2

98

Qual é a diferença entre EventEmitter.emit()e EventEmitter.next()? Ambos enviando o evento para os ouvintes inscritos.

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

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

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

A documentação para o EventEmitter não é tão útil no momento.

Holger Stitz
fonte

Respostas:

2

Na versão mais recente (Ng9), o código-fonte do event_emitter.tsé o seguinte:

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); }
}

EventEmitterestende-se da classe pai Subject. E emitchame o método super.next()como você deve esperar.

Chris Bao
fonte