Angular uses the @Output decorator and the EventEmitter class to emit events to the parent component. But you can use RxJS streams instead.

The EventEmitter class is actually a wrapper around the RxJs Subject class. If you have an existing Subject or Observable that you want to use as an output, you can directly use it with the @Output decorator.

TypeScript
export class SearchComponent {
  // With Angular EventEmitter
  @Output()
  search = new EventEmitter<string>();

  // With RxJs Subject / Observable
  @Output()
  search = this.form.valueChanges.pipe(
    debounceTime(500),
    map((value) => value.term),
    distinctUntilChanged(),
  );
}