Angular 角度2+;路由器出口外的滑动侧边栏

Angular 角度2+;路由器出口外的滑动侧边栏,angular,sidebar,router-outlet,sidenav,Angular,Sidebar,Router Outlet,Sidenav,我试图实现一个边栏,在整个应用程序中点击各种按钮时打开(“更多信息”类型的功能)。出于这个原因,我希望将边栏组件放置在路由器出口之外 应用程序组件: <nav> <router-outlet> <sidebar> 当侧边栏打开时,我想灰色显示屏幕的其余部分,并单击任意位置(除了侧边栏,关闭侧边栏)。我认为这样做的方式是用单击事件将nav和路由器插座包装在一个div中,以关闭侧栏。侧栏打开/关闭/切换由服务管理。我遇到的问题是,像这样包装路由器出口(和na

我试图实现一个边栏,在整个应用程序中点击各种按钮时打开(“更多信息”类型的功能)。出于这个原因,我希望将边栏组件放置在路由器出口之外

应用程序组件:

<nav>
<router-outlet>
<sidebar>


当侧边栏打开时,我想灰色显示屏幕的其余部分,并单击任意位置(除了侧边栏,关闭侧边栏)。我认为这样做的方式是用单击事件将nav和路由器插座包装在一个div中,以关闭侧栏。侧栏打开/关闭/切换由服务管理。我遇到的问题是,像这样包装路由器出口(和nav)会覆盖用于打开侧栏的路由内的实际按钮点击。有什么建议吗?非常感谢

您可能只需要让侧边栏根据订阅的可观察对象或行为主体做出反应。我使用一个BehaviorSubject来接收命令,并在程序的另一部分订阅它,并让它做出相应的反应。有点像你的应用程序的消息传递系统。这对我来说真的很有效!您可以基于onclick来驱动它,而完全忘记该部分的路由

我认为您不会在侧边栏中执行此操作,而是在承载侧边栏的控制器(例如,父级)中执行此操作。如果你需要代码,请告诉我,但我认为这个答案会让你走上正确的道路


你可以做的另一件事是,一旦你控制了滑块,你可以让它弹出一个模态div。但是我没有任何代码。

请提供你当前拥有的示例代码,如果可能,使用创建一个演示,我将能够帮助你。我使用这个:。您只需要将javascript转换为angular,这相当简单。只需使用事件发射器控制到主节点的头。如果你有任何问题,请告诉我。