如果多于一个,Angular2 Rxjs观察者不会设置

时间:2016-02-15 05:14:41

标签: typescript angular observable rxjs observers

我试图从我的构造函数中设置多个观察者。只有一个被设置,其余部分没有变为空(未更改)。

我不确定为什么会这样做。

export class gq {

    /**
     * This is observable data service https://coryrylan.com/blog/angular-2-observable-data-services
     */
    constructor(private api: Api)
    {
        this._ = {

            // just to define object here, else it will give error
            observer: {
                s: '', q: '', translation: '', translationLanguage: '', transliteration: '', r: '', content: ''
            },

            // observables
            observable: {
                s$:                 new Observable(observer => this._.observer.s = observer).share(),
                q$:                 new Observable(observer => this._.observer.q = observer).share(),
                translation$:           new Observable(observer => this._.observer.translation = observer).share(),
                translationLanguage$:   new Observable(observer => this._.observer.translationLanguage = observer).share(),
                transliteration$:       new Observable(observer => this._.observer.transliteration = observer).share(),
                r$:               new Observable(observer => this._.observer.r = observer).share(),
                content$:               new Observable(observer => this._.observer.content = observer).share(),
            }
        };


        console.log(this._.observer);
        console.log('triggered constructor');
    }
}

输出为

Object {s: Subject, q: "", translation: "", translationLanguage: "", transliteration: ""…}

正如您所看到的那样,仅将s设为主题,但其余部分为null

1 个答案:

答案 0 :(得分:2)

我不知道你的应用程序代码的其余部分,但是你需要知道observable是懒惰的。这意味着只有在订阅时才会调用在调用Observable构造函数时指定的回调。

也许你只订阅了第一个观察者而不是其他人......