2017-10-11 6 views
0

Subjectをデフォルト値で使用して値を出力したいとします。startWith()はSubjectを返します

startWith("def")がこの方法です。

subject = new Rx.Subject().startWith("def value"); 

残念ながらstartWIth戻りObservableので、私は私が最初の場所で件名を使用しています唯一の理由である、onNext()を使用することはできません。この問題の回避策は何ですか?

答えて

3

観測可能なものと対象の両方を追跡してください。私は通常次のようなことをします...

export class FooService { 

    private _foos: Subject<Foo> = new subject<Foo>(); 

    public get foos: Observable<Foo> { 
    return this._foos.startsWith(...); 
    } 

    public emitFoo(foo: Foo) { 
    this._foos.next(foo); 
    } 

} 
2

あなたの質問は完全にはっきりしていません。あなたが他の何よりも先に "def value"を見るようにするには、@ Paceの答えを使用してください。

しかし、あなたはすべてのオブザーバーは、「最近放出される値」で始まり、そしてあなたが最初の値を発する前に、彼らが加入している場合、「DEF値」を使用し、その後、BehaviorSubjectを使用する場合:

var subject = new BehaviorSubject("default val"); 
subject.subscribe(...); // sees "default val", then anything you emit. 

subject.next("foo"); 
subject.subscribe(...); // sees "foo", then anything else you emit (does not see "default val") 
関連する問題