Різниця між EventEmitter.next () та EventEmitter.emit () у Angular 2


98

У чому різниця між EventEmitter.emit()і EventEmitter.next()? Обидва відправляють подію перед підписаними слухачами.

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

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

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

Documenation для EventEmitter не так корисно в даний момент.

Відповіді:



2

В останній версії (Ng9) вихідний код має такий вигляд event_emitter.ts:

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поширюється від батьківського класу Subject. І emitвиклик методу, super.next()як ви могли очікувати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.