Angular 2 从服务访问组件变量,该服务绑定到另一个服务,该服务绑定到组件
Angular 2 access component variable from service, that is bound to another service, which is bound to component
问题很简单:如何从服务访问变量而不通过函数本身传递组件变量?
我不想通过函数传递它,因为我想从 tabs.service
访问位于 AppComponent
中名为 thingies
的变量 BUT 从 sitetree.service
调用。函数 f_in_sitetreeService
会在某个时间某个地方被动态调用(在 plunker 中我从 appcomponent 调用它,但实际上它会从另一个地方调用)。
换句话说,我有一个服务正在调用另一个服务函数,后者又访问它的组件变量。
我想要的:
在 tabs.service
中我注释掉了 2 行,这会推送一个新的东西,然后记录数组。将它们注释掉是因为我不知道如何正确 declare/access 那里的组件阵列,而这正是我需要知道的。
我不确定我是否理解你的问题,但我会尝试回答...
听起来您希望 TabsService 操作在某个组件(在您的示例中为 AppComponent)上定义的 属性。第一条评论:这可能不是一个好方法。通常服务应该拥有应用程序数据,而不是组件。
但是,如果你真的 need/want 这样做,你必须以某种方式将对数组的引用传递给你的服务,比如在 AppComponent 的 ngOnInit 中:
ngOnInit() {
this.tabsService.setArrayReference(this.thingies);
}
然后在 TabsService 中:
setArrayReference(ref) { this.thingies = ref; }
由于我们处理的是 JavaScript 引用类型,AppComponent 和 TabsService 现在都将引用 same/one 数组。
现在您可以从 AppComponent 和 TabsService 访问和操作数组。
问题很简单:如何从服务访问变量而不通过函数本身传递组件变量?
我不想通过函数传递它,因为我想从 tabs.service
访问位于 AppComponent
中名为 thingies
的变量 BUT 从 sitetree.service
调用。函数 f_in_sitetreeService
会在某个时间某个地方被动态调用(在 plunker 中我从 appcomponent 调用它,但实际上它会从另一个地方调用)。
换句话说,我有一个服务正在调用另一个服务函数,后者又访问它的组件变量。
我想要的:
在 tabs.service
中我注释掉了 2 行,这会推送一个新的东西,然后记录数组。将它们注释掉是因为我不知道如何正确 declare/access 那里的组件阵列,而这正是我需要知道的。
我不确定我是否理解你的问题,但我会尝试回答...
听起来您希望 TabsService 操作在某个组件(在您的示例中为 AppComponent)上定义的 属性。第一条评论:这可能不是一个好方法。通常服务应该拥有应用程序数据,而不是组件。
但是,如果你真的 need/want 这样做,你必须以某种方式将对数组的引用传递给你的服务,比如在 AppComponent 的 ngOnInit 中:
ngOnInit() {
this.tabsService.setArrayReference(this.thingies);
}
然后在 TabsService 中:
setArrayReference(ref) { this.thingies = ref; }
由于我们处理的是 JavaScript 引用类型,AppComponent 和 TabsService 现在都将引用 same/one 数组。
现在您可以从 AppComponent 和 TabsService 访问和操作数组。