Różnica między EventEmitter.next () i EventEmitter.emit () w Angular 2

102

Jaka jest różnica pomiędzy EventEmitter.emit() i EventEmitter.next()? Oba wysyłają zdarzenie do subskrybowanych słuchaczy.

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

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

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

Documenation dla EventEmitter nie jest tak pomocny w tej chwili.

Holger Stitz
źródło

Odpowiedzi:

3

W najnowszej wersji (Ng9) kod źródłowy programu event_emitter.tswygląda następująco:

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

EventEmitterrozszerza się z klasy nadrzędnej Subject. I emitwywołanie metody super.next()zgodnie z oczekiwaniami.

Chris Bao
źródło