在angular5应用程序中,我有我想要通过角度服务控制的页面布局的各个部分。例如,我有一个sidenav组件,当一个值设置为打开时显示,我希望能够从我喜欢的任何组件切换它。
我最初的想法是,如果我可以将open
值绑定到我要创建的LayoutService
中的变量,并且LayoutService
将包含{{1将切换值并导致sidenav打开/关闭的方法。然后,我可以将toggle()
注入到我喜欢的任何组件中,并控制我布局的各个部分。
知道这是否可行以及如何进行此操作?我认为有可能使用LayoutService
或者其他东西,但我想知道是否有更简单的方法而且我不想使用redux。
答案 0 :(得分:0)
https://stackblitz.com/edit/angular-lj7gsz
这是一个可以使用简单的rxjs对象打开和关闭的侧栏。
在侧边栏服务中,我创建了一个可以传递布尔值的BehaviorSubject,并且我还暴露了一个Observable,每次将新值传递给该主题时都会发出。
通过订阅该observable(我已经使用异步管道来订阅我),我的侧栏组件将知道其他组件何时希望打开或关闭侧栏。所有其他组件需要做的是注入服务并调用服务的打开或关闭方法。
这并不完美,但我觉得它肯定比使用事件发射器更好,因为它们从未被用于服务。
希望这很有帮助。