【发布时间】:2017-12-18 23:05:03
【问题描述】:
我有一个名为“tree”的 Angular 组件。我想要的是从我的应用程序中的任何其他组件调用树上的方法。在任何时候,我的整个应用程序中都只有一棵树。是否可以在我想查看它的地方创建组件并以这种方式使用服务共享 componentRef:
export class AppComponent implements OnInit {
@ViewChild("tree") treeComponent: TreeComponent;
constructor(private treeService: TreeService) { }
ngOnInit() {
this.treeService.setTreeReference(this.treeComponent);
}
}
那么我可以这样称呼它:
export class OtherComponent {
constructor(private treeService: TreeService) { }
getActiveNode() {
return this.treeService.treeReference.getActiveNode();
}
}
这是 Angular2+ 还是一般 MVC 中的好习惯?
编辑1: 我忘了指明我无权访问 TreeComponent 代码,因为它是从库中导入的。
【问题讨论】:
-
该服务的消费者需要时刻知道活动节点吗?
-
不应将树组件本身存储在树服务中,而应允许树服务包含操作树组件所需数据的方法。在树服务上设置一个 on observable(s),并从树组件订阅它,这样当树组件依赖的某些数据发生变化时(在树服务中),您可以正确更新树组件。跨度>
标签: angular model-view-controller single-page-application