【问题标题】:Toggle SideBar Menu from other component in Angular 4从Angular 4中的其他组件切换侧边栏菜单
【发布时间】:2018-02-22 21:37:08
【问题描述】:

如何在我的 Angular 应用中实现侧边栏切换菜单。我对如何在另一个组件中调用侧边栏菜单感到困惑。我的切换按钮位于标题组件上。它的目的是当我单击标题组件上的切换按钮时显示侧边栏菜单。

header.component.html

  <div class="navbar-header"><a id="toggle-btn" href="#" class="menu-btn"><i class="icon-bars"> </i></a><a href="index.html" class="navbar-brand">
              <div class="brand-text"><span>MCDONALDS</span></div></a></div>

sidebar.component.html

<nav class="side">
  <h1>CLICK TO Show Me</h1>
  </nav>

core.component.html

<app-header></app-header>
<app-sidebar></app-sidebar>

【问题讨论】:

  • 这两个组件有共同的父组件吗?
  • @Vega。是的。它们位于 core.component.html 下。请查看更新的图像
  • 两者都有核心组件作为父组件?结构没有说明它
  • 是的。看到图片了吗?
  • 是的,图片没有说明它们之间的关系。请发布 core.html

标签: angular angular-directive angular-components


【解决方案1】:

您可以使用共享服务打开侧边栏。创建一个服务 vith EventEmitter 并在您想要打开侧边栏时发出一个事件。然后,在侧边栏组件中,订阅 EventEmitter 并在每次触发事件时打开/关闭侧边栏。

例如:

服务

import { Injectable, EventEmitter } from '@angular/core';

@Injectable()
export class CoreService {
  public toggleSidebar: EventEmitter<any> = new EventEmitter();
}

标题

public openSidebar() {
  this.coreService.toggleSidebar.emit();
}

侧边栏

this.coreService.toggleSidebar.subscribe(() => {
  //open your sidebar by setting classes, whatever
});

【讨论】:

  • @IIyaSurmay。你能用我上面的代码来做吗?谢谢
  • 你没有提供你的类的代码,只是html。粘贴到这里。
  • 我还没有在打字稿中放任何东西
  • 在侧边栏,我应该把这个订阅代码放在哪里?
猜你喜欢
  • 2016-05-21
  • 2022-06-29
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
相关资源
最近更新 更多