【问题标题】:Angular 2 access component variable from service, that is bound to another service, which is bound to componentAngular 2从服务访问组件变量,即绑定到另一个服务,该服务绑定到组件
【发布时间】: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

【问题讨论】:

    标签: variables service angular components


    【解决方案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!我不知道这样的功能,它就像一个魅力,谢谢!我也会考虑你所说的,关于将数据转移到服务:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 2017-03-16
    • 2019-06-15
    • 1970-01-01
    • 2017-11-25
    • 2011-10-14
    相关资源
    最近更新 更多