【发布时间】:2018-10-12 06:34:01
【问题描述】:
组件数据共享出现问题。我有 2 个组件,它们没有父子关系。在我的侧边栏组件中,我有一个复选框,通过单击此复选框,我想在我的仪表板组件中执行一些操作。
侧边栏组件
manageWidgetLocation(){
this.togglewidgetService.toggleSideNav(true);
}
仪表板组件
ngOnInit(): void {
this.togglewidgetService.onSideNavToggle()
.subscribe(
(opening) => {
debugger;
if (opening) {
console.log(">>>>>>>here");
} else {
//Logic to close the sidenav here
}
}
);
}
open(sidenav) {
sidenav.open();
}
close(sidenav) {
sidenav.close();
}
服务
import { Injectable } from "@angular/core"
import { Observable, Subject } from "rxjs/Rx";
@Injectable()
export class toggleWidgetService {
private sidenavOpenSubject : Subject<boolean>;
constructor() {
this.sidenavOpenSubject = new Subject<boolean>();
}
toggleSideNav(opening: boolean): void {
this.sidenavOpenSubject.next(opening);
}
onSideNavToggle(): Observable<boolean> {
return this.sidenavOpenSubject;
}
}
【问题讨论】:
-
有什么问题?
-
组件和服务是否在单独的模块中?
-
@John Velasquez 是的
-
查看stackblitz.com/edit/…中创建
subject的方法。希望这将有助于stackoverflow.com/questions/49898893/…。您可以创建一个common模块,其主题是其他模块组件的subscribed
标签: angular angular5 angular2-services