我需要以下方面的帮助:
我在服务中有一个变量,我需要在一个组件中给该变量一个值,并在另一个组件中使用该变量,并将该变量赋予之前的值。我将该服务包含在app.module.ts文件的providers数组中,但在实例化任何组件中的服务时,该变量的值将重置为服务文件中定义的默认值(未定义/赋值给的值)。如何在不更改路由的情况下在服务变量中保留特定值?
答案 0 :(得分:0)
Angular中的服务本身就是单身人士。猜测一下,我会说你使用= new MyService()
在每个组件中实例化服务,或者作为组件中的实例变量。这将使用其默认值创建服务的新实例。原因是,一旦您在组件中实例化并更改了值,该值仅在该服务的实例中更改。
为了将您的服务保持为单例(从而维护应用程序中的更改),请不要使用new
关键字或实例变量进行实例化。相反,请确保您的服务标记为@Injectable
并使用组件构造函数注入单例。
例如服务
@Injectable()
export class MyService {
// service instance variables;
}
组件注入:
constructor(private myService: MyService) {
}
此时,任何变量都可以通过this.myService.variableName
访问,并且会在组件之间保持更改。