使用服务管理Angular 5布局

时间:2018-01-09 17:01:06

标签: angular5

在angular5应用程序中,我有我想要通过角度服务控制的页面布局的各个部分。例如,我有一个sidenav组件,当一个值设置为打开时显示,我希望能够从我喜欢的任何组件切换它。

我最初的想法是,如果我可以将open值绑定到我要创建的LayoutService中的变量,并且LayoutService将包含{{1将切换值并导致sidenav打开/关闭的方法。然后,我可以将toggle()注入到我喜欢的任何组件中,并控制我布局的各个部分。

知道这是否可行以及如何进行此操作?我认为有可能使用LayoutService或者其他东西,但我想知道是否有更简单的方法而且我不想使用redux。

1 个答案:

答案 0 :(得分:0)

https://stackblitz.com/edit/angular-lj7gsz

这是一个可以使用简单的rxjs对象打开和关闭的侧栏。

在侧边栏服务中,我创建了一个可以传递布尔值的BehaviorSubject,并且我还暴露了一个Observable,每次将新值传递给该主题时都会发出。

通过订阅该observable(我已经使用异步管道来订阅我),我的侧栏组件将知道其他组件何时希望打开或关闭侧栏。所有其他组件需要做的是注入服务并调用服务的打开或关闭方法。

这并不完美,但我觉得它肯定比使用事件发射器更好,因为它们从未被用于服务。

希望这很有帮助。