2016-05-13 3 views
3

私は角2とRxJS違いは

これら二つの間のいずれかの違いがある5を使用していますか?おかげ

isOpen$ = new BehaviorSubject<boolean>(true); 

isOpen$ = BehaviorSubject.create(true); 
+0

Javaが、同じ原則が適用される可能性があります。http://stackoverflow.com/questions/13046877/consider-providing-static-factory-methods-insteads-of-constructors –

+0

@KevinKrumwiedeが助けてくれてありがとう! –

答えて

6

BehaviorSubjectcreateメソッドを持っていないので、私はそれがSubject基底クラスによって公開されている推測しています。

コンストラクタを使用してください。 この場合、BehaviorSubjectのコンストラクタを使用する必要があります。 createメソッドは、ObserverObservableを組み合わせるために使用されます。

たとえば、あなたが実行してSubjectWebSocketを変換することができます:彼らはSubjectでまったく同じように見える

var webSocket = new WebSocket(url); 

var observer = Observer.create(next => webSocket.send(JSON.stringify(next))); 
var observable = Observable.fromEvent(webSocket, 'message', m => JSON.parse(m.data)); 

var subject = Subject.create(observer, observable); 
+0

ありがとうございます! –

1

。ただし、BehaviorSubjectにはcreateメソッドがありません。ここでBehaviorSubjectSubject

static create: Function = <T>(destination: Observer<T>, source: Observable<T>): Subject<T> => { 
    return new Subject<T>(destination, source); 
}; 

constructor(protected destination?: Observer<T>, protected source?: Observable<T>) { 
    super(); 
    this.source = source; 
} 

からコードがあるSubject

から継承されています、それはおそらくまだ実装されていないのです。将来は実現されるかもしれない。

したがって、BehaviorSubjectでは、createの動作はコンストラクタとはまったく異なります。

+0

ありがとう! –