Différence entre EventEmitter.next () et EventEmitter.emit () dans Angular 2

98

Quelle est la différence entre EventEmitter.emit()et EventEmitter.next()? Les deux envoient l'événement aux auditeurs abonnés.

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

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

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

La documentation de l'EventEmitter n'est pas si utile pour le moment.

Holger Stitz
la source

Réponses:

2

Dans la dernière version (Ng9), le code source de event_emitter.tsse présente comme suit:

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

EventEmitters'étend de la classe parente Subject. Et emitappel de méthode super.next()comme vous pouvez vous y attendre.

Chris Bao
la source