【发布时间】:2020-11-13 05:44:14
【问题描述】:
我对使用 BehiavorSubject 而不是在服务中使用共享变量感到有些困惑。如果我使用共享变量创建服务甚至覆盖它们,角度组件也会检测到这些变化,那我为什么要使用 BehiavorSubject 而不是共享变量呢? 例如,在我的项目中,如果用户登录,则会显示一个导航栏,因此我有 ngIf service.isLoggedIn 并且它工作正常。为什么我需要一个可观察的服务并订阅它的事件。如果有人从不同的组件更改此值,它也会在此处更改。我是 Angular 新手,如果我遗漏了什么,请告诉我。 谢谢 (我按照这个例子:https://loiane.com/2017/08/angular-hide-navbar-login-page/)
【问题讨论】:
-
您无法订阅共享变量的更改
-
组件也检测到这些变化 - 如何?您需要从组件中主动轮询以了解变量是否已更改。使用
BehaviorSubject,您只需订阅它并等待它更改。 -
在我的项目中,我有一个导航栏,如果我登录则会显示该导航栏,因此我有 ngIf service.isLoggedIn 并且它工作正常。为什么我需要使用 observable 订阅。如果有人从不同的组件更改此值,它也会在此处更改。我是 Angular 新手,如果我遗漏了什么,请告诉我。
-
观察未来的变化
-
对不起,我不明白“观察未来的变化”
标签: angular observable angular-services behaviorsubject