variables - Angular2 从另一个组件访问变量

标签 variables events binding angular

尝试过 EventEmitter,但没有机会,而且文档太少......感谢任何帮助

我有一个名为侧边栏的组件和另一个名为标题的组件,当您单击标题中的按钮时,它应该隐藏侧边栏......您将如何在 angular2 中实现这一点?

谢谢

最佳答案

使用您在组件之间共享的服务,这非常容易。

例如一个SidebarService:

@Injectable()
export class SidebarService {
  showSidebar: boolean = true;

  toggleSidebar() {
    this.showSidebar = !this.showSidebar;
  }
}

在您的侧边栏组件中,只需将 *ngIfSidebarService 中的 showSidebar 变量放在一起。也不要忘记在构造函数中添加服务。

@Component({
  selector: 'sidebar',
  template: `
      <div *ngIf="_sidebarService.showSidebar">This is the sidebar</div>
  `,
  directives: []
})
export class SidebarComponent {
  constructor(private _sidebarService: SidebarService) {

  }
}

在要处理侧边栏切换的组件中,还需要注入(inject) SidebarService 并使用服务方法添加 click 事件。

@Component({
  selector: 'my-app',
  template: `
    <div>
      <button (click)="_sidebarService.toggleSidebar()">Toggle Sidebar</button>
      <sidebar></sidebar>
    </div>
  `,
  directives: [SidebarComponent]
})
export class App {
  constructor(private _sidebarService: SidebarService) {

  }
}

不要忘记将 SidebarService 添加到您的 Bootstrap 中的提供者:

bootstrap(App, [SidebarService])

Plunker for example usage

关于variables - Angular2 从另一个组件访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37325166/

相关文章:

javascript - 修改javascript代码以遍历表单中的所有变量

javascript - jquery 自动完成建议触发搜索按钮

javascript - Internet Explorer的 “Autocomplete”函数不触发JavaScript事件

c++ - 将带有存储在 std::function 中的捕获子句的 lambda 转换为原始函数指针

java - Map 中的 Spring 绑定(bind)值

javascript - 将一个变量分配给两个值?

javascript - 在javascript中输出所有表单变量(类似于php的print_r())

java - Struts 表单和变量声明

c++ - 如何在 C/C++ 中检查 USB 是否插入或移除

wpf - 将 ListViewItem ContextMenu MenuItem 命令绑定(bind)到 ListView 的 ItemsSource 的 ViewModel