动态全局变量在不同组件Angular4中

时间:2017-11-20 13:11:27

标签: angular

我需要以下方面的帮助:

我在服务中有一个变量,我需要在一个组件中给该变量一个值,并在另一个组件中使用该变量,并将该变量赋予之前的值。我将该服务包含在app.module.ts文件的providers数组中,但在实例化任何组件中的服务时,该变量的值将重置为服务文件中定义的默认值(未定义/赋值给的值)。如何在不更改路由的情况下在服务变量中保留特定值?

1 个答案:

答案 0 :(得分:0)

Angular中的服务本身就是单身人士。猜测一下,我会说你使用= new MyService()在每个组件中实例化服务,或者作为组件中的实例变量。这将使用其默认值创建服务的新实例。原因是,一旦您在组件中实例化并更改了值,该值仅在该服务的实例中更改。

为了将您的服务保持为单例(从而维护应用程序中的更改),请不要使用new关键字或实例变量进行实例化。相反,请确保您的服务标记为@Injectable并使用组件构造函数注入单例。

例如服务

@Injectable()
export class MyService {
   // service instance variables;
}

组件注入:

constructor(private myService: MyService) {

}

此时,任何变量都可以通过this.myService.variableName访问,并且会在组件之间保持更改。