我父母的工具表包含:
<router-outlet></router-outlet>
儿童包含图表。在父级上,我可以:全部隐藏,全部显示,隐藏一个,显示一个。
我创建了通信服务:
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class CommunicationService {
constructor () { }
private selectedTools = new Subject<any>();
private changedTool = new Subject<any>();
toolsEmitted$ = this.selectedTools.asObservable();
toolEmitted$ = this.changedTool.asObservable();
hideAllTools () {
this.selectedTools.next({show: false, tools : []});
}
showAllTools (tools: string[]) {
this.selectedTools.next({show: true, tools});
}
hideTool (tool: string) {
this.changedTool.next({show: false, tool});
}
showTool (tool: string) {
this.changedTool.next({show: true, tool});
}
}
结果我得到2个订阅:
this.subscription1 = this.communicationService.toolsEmitted$.subscribe(data => {
if (data.show) {
this.chart.show();
} else {
this.chart.hide();
}
});
this.subscription2 = this.communicationService.toolEmitted$.subscribe(data => {
if (data.show) {
this.chart.show(data.tool);
} else {
this.chart.hide(data.tool);
}
});
请您为最佳选择的组织提供建议吗?看来2个订阅不是一个好方法。