我有两个名为header和navbar的组件。 我在navbar.component.html中有一个导航栏,当我单击header.component.html中的汉堡包按钮时,我想在屏幕上显示它 这两个组件都将AppComponent作为父组件
我的计划是将flag(boolean)值从childComponent(header)转移到appComponent(Parent),然后将相同的flag值从appComponent(parent)转移到navbarComponent(另一个孩子)
我到目前为止所做的:
在header.component.html中,我放置了一个click事件,该事件会触发header.component.ts中的toggleSidebar()函数,其中标志从child(itself)发射到parent(appComponent)。
现在,我对如何在navbarComponent内触发另一个函数(也称为带有标志值的toggleSidebar())感到困惑,即我想在函数中传递该标志并将其从parent(appComponent)激发到child(navbarComponent) )
P.S。我是新手,不胜感激。
答案 0 :(得分:1)
检查更新的stackblitz。
我从标头和navbar
组件中删除了输入和输出属性;取而代之的是,我使用了rxjs
中的Subject进行交流。
为此,我仅创建了一个服务即。 AppService
,因此我使用变量flagChange
实现了Subject。
当用户单击汉堡包图标时,从头文件中调用切换功能,该功能调用应用程序服务,因为我将更改值传递给flagChange
。
然后在navbar
组件中,我注入了应用服务对象,并使用它在flagChange
中订阅了(观察到)ngInit()
的值。
因此,当用户单击图标时,标题组件中的标志值被切换,使用next()函数将此更改注册/提供给flagChange
中的AppService
变量,并使用subscription观察到此更改navbar
组件中的方法。