首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不同组件Angular4中的动态全局变量

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

Stack Overflow用户
提问于 2017-11-20 13:11:27
回答 1查看 4.4K关注 0票数 0

我需要以下方面的帮助:

我在服务中有一个变量,我需要在一个组件中给这个变量一个值,并在另一个组件中使用这个变量,并使用我刚刚分配给该变量的前一个值。我在app.module.ts文件的providers数组中包含了服务,但是当在任何组件中实例化服务时,该变量的值会重置为服务文件中定义的默认值(未定义/分配给它的值)。在不改变路由的情况下,如何在服务变量中保留某个值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-20 13:24:38

角度上的服务本质上是单子的。根据猜测,我认为您正在用= new MyService()或组件中的实例变量实例化每个组件中的服务。这将创建一个带有默认值的服务的新实例。其原因是,一旦您在组件中实例化并更改了一个值,则该值仅在该服务实例中更改。

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

例如服务

代码语言:javascript
运行
复制
@Injectable()
export class MyService {
   // service instance variables;
}

组分注入:

代码语言:javascript
运行
复制
constructor(private myService: MyService) {

}

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47392869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档