2017-02-16 17 views
4

私はAngular2を初めて使っています。私が_showNavBarshowNavBarEmitterを購読すれば、どちらも同じです(下のコードを参照してください)。何か違いはありますか?ObservableとasObservable()?

public _showNavBar: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(null); 
public showNavBarEmitter: Observable<boolean> = this._showNavBar.asObservable(); 

答えて

5

asObservableは、サブジェクトにアクセスできない元のサブジェクトになります。このようにして、購読できる人と値を発行できる人を制限することができます。

これを有効にするには、_showNavBarprivateにする必要があります。

+0

ありがとう、それは非常に便利ですが、上記のコードが注入可能な別のクラスにあることは疑いがあります。 _showNavBarをプライベートにすると、別のコンポーネント(このクラスをインポートした場所)から値を送出することができなくなります。 – vikas

+0

'addEvent(){this._showNavBar.next( 'someValue');}のようなメソッドを追加できます。 } '。しかし、あなたがそれを必要としない、または望んでいなければ、おそらく 'asObservable'は必要ないでしょう。私はそれを常にこのように使うのは良い習慣だと思う。 –

関連する問題