eventemitter是一个可观测的rxjs吗?
在角度文档中,它解释了如何进行通信。
使用eventemitter从子组件到父组件。我们应该用
eventemitter只在组件中,或者可以用于角服务
也?
在角文档中,它解释了父和子如何通过共享服务进行通信。
观察RXJS主题。我们能用eventemitter代替rxjs吗
这个任务服务示例中的主题?如果我们可以在服务中使用eventemitter,请帮助将此示例与eventemitter进行转换。我是新来的角度。
https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service
我看了这些相关的帖子后有点困惑:
Delegation: EventEmitter or Observable in Angular2
Global Events in Angular 2
What is the proper use of an EventEmitter?
Angular 2 Service + RxJS BehaviorSubject or EventEmitter
Shared RxJS subject for bidirectional data binding in Angular 2

最佳答案

eventemitter扩展自rxjs主题,您可以将其用作可观察对象。
Angular sources

    export declare class EventEmitter<T> extends Subject<T> {
      __isAsync: boolean;
      constructor(isAsync?: boolean);
      emit(value?: T): void;
      subscribe(generatorOrNext?: any, error?: any, complete?: any): any;
    }

在父组件和子组件之间共享数据的最佳实践是使用@input和@output
当您需要使用服务进行共享时。你需要使用subject或behaviorsubject
服务示例
@Injectable()
export class MyService {
  private data: BehaviorSubject<MyData> = new BehaviorSubject(null);

  getData(): Observable<MyData> {
    return this.data;
  }

  setData(d: MyData): void {
    this.data.next(d);
  }
}

在组件中使用
data: Observable<MyData>;

constructor(private myService: MyService) {}

ngOnInit() {
   this.data = this.myService.getData();
}

在模板中使用
<div>{{data|async}}</div>

关于angular - Angular 服务中的EventEmitter或RxJS主题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45994932/

10-12 03:36