angular6 - 如何通过另一个组件的按钮进行切换?
问题描述
rigntsidenav.component.html
<div ng-sidebar-content>
<button (click)="_toggleSidebar()">Toggle sidebar</button>
<p>
Start editing to see some magic happen :)
</p>
</div>
sidenav.service.ts
export class SidenavService {
public _opened: boolean = false;
public _toggleSidebar() {
this._opened = !this._opened;
}
constructor() { }
}
sidenav.component.html
<ng-sidebar [(opened)]="_opened" position="right">
<ul>
<li>Menu Item</li>
<li>Menu Item</li>
<li>Menu Item</li>
</ul>
</ng-sidebar>
如何用角度切换sidenav请帮助我
解决方案
sidenav.service.ts
@Injectable()
export class SideNavService {
public _opened = false;
private sideNavSubject = new Subject<SideNavState>();
sideNavState = this.sideNavSubject.asObservable();
constructor() { }
_show() {
this.sideNavSubject.next(<SideNavState>{ _opened: true });
}
_hide() {
this.sideNavSubject.next(<SideNavState>{ _opened: false });
}
}
export interface SideNavState {
_opened: boolean;
}
sidenav.component.ts
public _opened = false;
constructor(private sideNavService: SideNavService) { }
ngOnInit() {
this.sideNavService.sideNavState.subscribe((state: SideNavState) => {
this._opened = state._opened;
});
}
rigntsidenav.component.ts
constructor(private sideNavService: SideNavService) { }
_toggleSidebar() {
this.sideNavService._show();
}
记得添加SideNavService
到app.module.ts
providers
推荐阅读
- python - PyQt5单选按钮制表符停止功能障碍
- android - 为什么我们在 SqLite 中读取内容时说 id,但在创建/更新/删除行时说 'id'?
- sql - 按月的最后一天创建每月标签值
- mysql - 将 MySQL Select 与嵌入在字符串中的 RegEx 表达式一起使用
- azureservicebus - Azure 服务总线异常 - 提供的锁无效。锁已过期,或者消息已从队列中删除
- javascript - 使用 Python 或 JavaScript 获取到 WhatsApp 的 websocket 连接?
- node.js - 如何正确填充 typeorm?
- python - 如何在python中悬停等值线图
- javascript - 在控制台上工作时不显示 INNERHTML
- r - 使用 lapply 时如何删除第一个空白页?