【发布时间】:2019-03-27 12:21:08
【问题描述】:
我的 Angular 应用中有以下场景:
当我有路由/ 时可见的组件MainDashboardComponent。显然我的app.component.html 文件中有<router-outlet> 标签,如下所示:
<app-side-menu></app-side-menu>
<div class="main-container">
<div class="content">
<router-outlet></router-outlet>
</div>
</div>
如您所见,我有一个 SideMenuComponent 我曾经在我的所有路线上都有一个侧面菜单。在MainDashboardComponent 中,我有一个方法,由于某种原因需要切换位于侧面菜单上的聊天元素。
在SideMenuComponent 内部,我有一个方法可以处理聊天元素的可见性切换,它可以按预期工作。如何从我的MainDashboardComponent 调用此方法并从那里切换聊天元素?
我尝试了没有成功
我尝试将SideMenuComponent 注入到我的MainDashboardComponent 中,但是尽管调用了toggleChat() 方法,但该元素并没有改变它的可见性。看起来我猜想我有一个相同组件的多个实例......
你能帮我解决这个问题吗?谢谢!
MainDashboardComponent
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-main-dashboard',
templateUrl: './main-dashboard.component.html',
styleUrls: ['./main-dashboard.component.scss']
})
export class MainDashboardComponent implements OnInit {
constructor() { }
ngOnInit() {}
setFocus(id) {
// here I'd like to call SideMenuComponent togglechat() ...
}
}
SideMenuComponent
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-side-menu',
templateUrl: './side-menu.component.html',
styleUrls: ['./side-menu.component.scss']
})
export class SideMenuComponent implements OnInit {
showChat: boolean;
constructor() {
this.showChat = false;
}
ngOnInit() {
}
toggleChat() {
this.showChat = !this.showChat;
}
}
【问题讨论】:
-
你能添加完整的代码吗
-
哪个是你的 MainDashboardComponent ? MainDashboardComponent 是路由之一吗?
-
我已经更新了我的问题:)
-
您可以将
toggleChat()方法设置为静态和setFocus(id) { SideMenuComponent.toggleChat() -
你也可以利用 rxjs BehaviorSubject
标签: javascript angular angular-components