我需要以下方面的帮助:
我在服务中有一个变量,我需要在一个组件中给这个变量一个值,并在另一个组件中使用这个变量,并使用我刚刚分配给该变量的前一个值。我在app.module.ts文件的providers数组中包含了服务,但是当在任何组件中实例化服务时,该变量的值会重置为服务文件中定义的默认值(未定义/分配给它的值)。在不改变路由的情况下,如何在服务变量中保留某个值?
发布于 2017-11-20 13:24:38
角度上的服务本质上是单子的。根据猜测,我认为您正在用= new MyService()或组件中的实例变量实例化每个组件中的服务。这将创建一个带有默认值的服务的新实例。其原因是,一旦您在组件中实例化并更改了一个值,则该值仅在该服务实例中更改。
为了将您的服务保持为单例(从而维护整个应用程序的更改),不要使用new关键字或实例变量实例化。相反,请确保您的服务被标记为@Injectable,并使用组件构造函数注入单例。
例如服务
@Injectable()
export class MyService {
// service instance variables;
}组分注入:
constructor(private myService: MyService) {
}此时,任何变量都可以通过this.myService.variableName访问,并将在组件之间持久化更改。
https://stackoverflow.com/questions/47392869
复制相似问题