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/