【问题标题】:Angular : How to Manipulate an @Input / local variable in component directly from a service?Angular:如何直接从服务中操作组件中的@Input / 局部变量?
【发布时间】:2017-06-22 10:40:57
【问题描述】:

我想从组件调用的服务中操作一些局部变量的值。

是的,可以通过(在组件中)订阅 Observable(在服务中)来完成,但我不想在组件中添加任何内容。

updating variable changes in components from a service with angular2

提出这个建议:

component {
     service.subject.subscribe (_=>{--do stuff here --})
} 
Service {
     subject() -- An observable --
}

我希望服务负责设置我的一些局部变量(在组件中)。

类似这样的:

Service --> 调用某个组件的变量并设置它!

这可以做到吗?如果是,那怎么办?

【问题讨论】:

  • 请显示一些代码...到目前为止您尝试了什么?
  • 我将编辑问题并添加相关代码

标签: angular rxjs observable


【解决方案1】:

使用服务的整个想法是使它们独立且可重用。因此,您让服务修改组件属性的想法在服务和组件之间引入了紧密耦合。

如果你仍然想这样做,那么在这个服务上创建一个 setter 并从你的组件调用它,传递对组件实例的引用,例如

myService.setComponent(this);

然后您将能够从服务中修改组件的属性。但同样,我不建议走这条路。

【讨论】:

  • 感谢 Yakov 的快速回答。没错,它会导致紧密耦合的实体。我实际上打算做的是专门为此创建一个组件操纵器服务,其他服务将使用它。基本上我正在创建的是一些模块,默认情况下会处理一些冗余的东西,比如显示“与 Http 请求相关的错误”,而不需要为它编写组件(选择)。
  • 如果您要继续这条路线,请创建一个声明方法 setErrors() 的接口并让您的每个组件实现它,以便您的服务将在每个组件上调用相同的方法。这会在一定程度上减少紧耦合。
猜你喜欢
  • 2017-05-26
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
相关资源
最近更新 更多