首页 > 解决方案 > Angular 2 - 将布尔值“true”从一个组件传递到另一个组件(不是兄弟姐妹)

问题描述

在一个组件上,我有一个触发功能的按钮:

<button (click)="open Popup(); hideButton()"></button>

我有,可以说:buttonService我应该用于这两个组件之间的连接。

在第二个组件(与第一个组件无关的父子组件)中,我有多个这样的按钮:

<button class="element1"></button>
<button [class.hiddenClass]="hideButt" class="element2"></button>
<button class="element3"></button>

第二个组件是从第一个组件单击相同按钮时打开的弹出窗口,此时它还应该触发hideButton()函数将布尔值“true”传递给hideButt第二个(弹出)组件并隐藏按钮。我该怎么做?订阅、Observable、EventEmitter?

标签: angularbooleancomponents

解决方案


您可能会发现 rxjs 主题很有用。它非常适合与服务进行跨组件通信。在您的服务类中添加一个属性,

公共按钮Click = new Subject()

然后在您要从中发送数据的组件中,联系服务并在其上调用 next()

This.myservice.buttonClick.next (true)

然后您可以从任何其他组件订阅您的主题

This.myservice.buttonClick.subscribe(数据 => 数据)

每当您下次调用时,任何订阅都会从任何组件接收您的新数据。

此外,behavioursubject 是将发出初始值的主题

希望这可以帮助!


推荐阅读