Unterschied zwischen EventEmitter.next () und EventEmitter.emit () in Angular 2

97

Was ist der Unterschied zwischen EventEmitter.emit()und EventEmitter.next()? Beide senden das Ereignis an die abonnierten Listener.

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

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

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

Die Dokumentation für den EventEmitter ist momentan nicht so hilfreich.

Holger Stitz
quelle

Antworten:

2

In der neuesten Version (Ng9) lautet der Quellcode von event_emitter.tswie folgt:

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

EventEmittererstreckt sich von der Elternklasse Subject. Und emitMethodenaufruf super.next()wie erwartet.

Chris Bao
quelle