Angular 2 - 将布尔值“true”从一个组件传递到另一个组件(不是兄弟组件)

Joh*_*den 2 components boolean angular

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

<button (click)="open Popup(); hideButton()"></button>
Run Code Online (Sandbox Code Playgroud)

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

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

<button class="element1"></button>
<button [class.hiddenClass]="hideButt" class="element2"></button>
<button class="element3"></button>
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

public buttonClick = new Subject<boolean>()
Run Code Online (Sandbox Code Playgroud)

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

this.myservice.buttonClick.next (true)
Run Code Online (Sandbox Code Playgroud)

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

this.myservice.buttonClick.subscribe (data => data)
Run Code Online (Sandbox Code Playgroud)

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

此外,行为主体是会发出初始值的主体

希望这可以帮助!