RxJs中的主题和Angular2中的EventEmitter
问题描述:
他们之间有什么区别,何时以及如何使用它们?我读了这个主题相当于一个EventEmitter。RxJs中的主题和Angular2中的EventEmitter
如果我想重写这个,怎么样?
import { Injectable} from '@angular/core';
import { Subject,BehaviorSubject } from 'rxjs';
import {Playlists} from 'channel' /** Assumes this is where you have defined your Playlists interface **/
@Injectable()
export class PlaylistService {
private _currentPlaylists$: Subject<Playlists> = new BehaviorSubject<Playlists>(null);
constructor() {}
currentPlaylists() {
return this._currentPlaylists$.asObservable();
}
setCurrentPlaylists(playlists:Playlists){
this._currentPlaylists$.next(playlists);
}
}
答
实现与
Output
装饰在Angular2组件自定义事件时
EventEmitter
S的关系的前提下使用:
@Output()
someEvent: EventEmitter = new EventEmitter();
在其他情况下,你可以使用Subject
S(从Rxjs),因为它不涉及Angular2的特殊功能。
EventEmitter
内部延伸Subject
。见https://github.com/angular/angular/blob/master/modules/%40angular/facade/src/async.ts#L63
你的代码看起来不错,我;-)
见http://stackoverflow.com/questions/36076700/what-is-the-proper-use-of-an-eventemitter正确使用EventEmitter的。 –