【问题标题】:Observable vs asObservable()?可观察与 asObservable()?
【发布时间】:2017-02-16 11:35:20
【问题描述】:

我是 Angular2 的新手,我只是想知道如果我订阅 _showNavBarshowNavBarEmitter 两者都一样(请参阅下面我正在使用的代码)。有什么区别吗?

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

【问题讨论】:

    标签: angular typescript rxjs


    【解决方案1】:

    asObservable 使订阅者无法访问原始主题。这样您就可以限制谁只能订阅以及谁也可以发出值。

    要使此功能生效,您需要设置_showNavBar private

    【讨论】:

    • 谢谢,这非常有用,但我怀疑上面的代码是在一个单独的可注入类中。如果我将 _showNavBar 设为私有,那么我将无法从另一个组件(我在其中导入此类)发出值。
    • 你可以添加类似addEvent() { this._showNavBar.next('someValue'); }的方法。但是,如果您不需要或不想要那个,那么您可能根本不需要asObservable。我认为始终以这种方式使用它是一种好习惯。
    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多