我有一个服务ServiceA
,它有自己的状态(实例变量等),在我的模块中我有多个服务实例ServiceA
。Angular 2:如何在不同路由上共享非模块级服务
@Injectable()
export class ServiceA {
// It defines instance variables.
}
因为我需要的ServiceA
多个实例,我不能让它模块级组件。
在ComponentB
实例化一个ServiceA
实例,并有可能改变它的状态:
@Component({
providers = [ServiceA],
})
export class ComponentB {
// changes the state of ServiceA.
}
另外在ComponentB
HTML模板我有一个路线ComponentC
,需要访问同ServiceA
实例:
<a routerLink="/path_to_component_c"></a>
这里是ComponentC
的定义:
@Component({
providers = [],
})
export class ComponentC {
// accesses ServiceA.
}
如果ServiceA
是一个模块级组件,不会有问题在ComponentB
和ComponentC
之间共享,因为它们都在同一个模块中。但是,由于ServiceA
直接注入ComponentB
,我无法再这样做。请注意,每次只有一个ComponentC
将被创建,ComponentC
被创建后ComponentB
。
有没有办法在ComponentB
和ComponentC
之间共享数据?谢谢!