首页 > 解决方案 > Angular 7 服务不作为单例

问题描述

我曾经ng generate创建一个服务。我初始化了一个数组并更改了一个标志,但是当我路由到不同的页面时,数组为空并且标志为假。

我的服务从

@Injectable({ providedIn: 'root' })

我知道这将创建一个应用程序范围的单例服务,但我之前只在单页应用程序上使用过服务。多页应用程序/路由有什么不同吗?

编辑:我已经尝试将该字段设置为静态,但也不起作用。

编辑2:这或多或少是我的问题:angular-7bp9kn.stackblitz.io在主页上初始化,并显示(真)。导航到 admin(在 home 初始化之后)并显示(false)。

标签: angulartypescriptservicesingleton

解决方案


我相信(来自您上面的 stackblitz 示例)您的问题是您使用的是指令href而不是routerLink="/home"指令。并且由于href将使用新的 uri 完全重新加载您的页面,因此该服务将重新初始化似乎是合法的,因为整个应用程序都是从头开始引导的。

因此,底线是,如果您只是替换hrefrouterLink,则通过该应用程序将只有一个服务实例。

你可以在这里阅读更多关于它的Angular 文档


推荐阅读