Angular 2从服务访问组件变量,即绑定到另一个服务,该服务绑定到组件
Posted
技术标签:
【中文标题】Angular 2从服务访问组件变量,即绑定到另一个服务,该服务绑定到组件【英文标题】:Angular 2 access component variable from service, that is bound to another service, which is bound to component 【发布时间】:2016-12-16 22:39:44 【问题描述】:问题很简单:如何在不通过函数本身传递组件变量的情况下从服务访问变量?
我不想通过函数传递它,因为我想从tabs.service
访问位于AppComponent
的名为thingies
的变量但是 从sitetree.service
调用。函数f_in_sitetreeService
将在某个时间动态地调用(在 plunker 中我从 appcomponent 调用它,但实际上它将来自另一个地方)。
换句话说,我有一个服务正在调用另一个服务函数,该函数又访问它的组件变量。
我想要什么:
在tabs.service
中,我注释掉了两行,这会推送一个新的东西,然后记录数组。将它们注释掉是因为我不知道如何正确声明/访问那里的组件数组,这就是我需要知道的。
Plunker: http://plnkr.co/edit/rFSW1UXz7Gw1rMXlD2Md?p=preview
【问题讨论】:
【参考方案1】:我不确定我是否理解您的问题,但我会尝试回答...
听起来您希望 TabsService 操作在某个组件(在您的示例中为 AppComponent)上定义的属性。第一条评论:这可能不是一个好方法。通常服务应该拥有应用程序数据,而不是组件。
但是,如果您真的需要/想要这样做,您必须以某种方式将数组的引用传递给您的服务,例如在 AppComponent 中的 ngOnInit 中:
ngOnInit()
this.tabsService.setArrayReference(this.thingies);
然后在 TabsService 中:
setArrayReference(ref) this.thingies = ref;
由于我们处理的是 javascript 引用类型,AppComponent 和 TabsService 现在都将引用同一个/一个数组。
现在您可以从 AppComponent 和 TabsService 访问和操作数组。
Updated plunker.
【讨论】:
神圣的sn-ps!我不知道这样的功能,它就像一个魅力,谢谢!我也会考虑你所说的,关于将数据转移到服务:)以上是关于Angular 2从服务访问组件变量,即绑定到另一个服务,该服务绑定到组件的主要内容,如果未能解决你的问题,请参考以下文章
如何在Angular中将变量从组件检索到另一个? (不在 Html 页面中,而是在组件中)