RxJs中的主题和Angular2中的EventEmitter

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); 
    } 
} 
+0

见http://*.com/questions/36076700/what-is-the-proper-use-of-an-eventemitter正确使用EventEmitter的。 –

实现与 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

你的代码看起来不错,我;-)