0

我有一个服务ServiceA,它有自己的状态(实例变量等),在我的模块中我有多个 service 实例ServiceA

@Injectable()
export class ServiceA { 
  // It defines instance variables.
}

由于我需要有多个实例ServiceA,因此我无法使其成为模块级组件。

ComponentB实例化一个ServiceA实例并可能改变其状态:

@Component({
  providers = [ServiceA],
})
export class ComponentB {
  // changes the state of ServiceA.
}

同样在我的 HTML 模板中,ComponentB我有一个路由到ComponentC,它需要访问同一个ServiceA实例:

<a routerLink="/path_to_component_c"></a>

这是 的定义ComponentC

@Component({
  providers = [],
})
export class ComponentC {
  // accesses ServiceA.
}

如果是模块级组件,则在和ServiceA之间共享它不会有问题,因为它们都在同一个模块中。但是,由于是直接注入的,我不能再这样做了。请注意,每次只会创建一个并在.ComponentBComponentCServiceAComponentBComponentCComponentCComponentB

有没有办法在ComponentB和之间共享数据ComponentC?谢谢!

4

1 回答 1

0

听起来您想ServiceA用作工厂而不是单例。这可以通过Factory Provider来完成。

另请参阅答案。

有没有办法在 ComponentB 和 ComponentC 之间共享数据?谢谢!

有几种方法。服务就是一个(是的,您可以为您的工厂实例提供服务!)。如果ComponentC是 的孩子ComponentB,您可以使用输入

于 2017-06-17T01:19:33.600 回答