首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >惰性加载模块不使用单例

惰性加载模块不使用单例
EN

Stack Overflow用户
提问于 2016-12-29 22:07:08
回答 2查看 473关注 0票数 0

我有一个根模块,它懒散地加载另一个模块。在这个延迟加载的模块中,路由有一个解析器,试图加载一些外部数据。如果失败,它将在自身中存储错误消息,并导航到错误组件。错误组件注入解析器,然后显示来自解析器的错误消息。

我已经调整了官方的角度2英雄巡回赛,作为一个例子,在以下方面:

  • app/crisis-center/crisis-detail-resolver.service.ts -修改为始终设置errorMessage字段,并导航到ErrorComponent。这之前导航到/crisis-center命令。
  • app/crisis-center/error.component.ts -新增加的。将CrisisDetailResolver作为依赖项,并从其中显示errorMessage

如果延迟加载crisis-center.module.ts,则注入到ErrorComponent的解析器与路由器中使用的解析器不相同。在调试时,我只能通过解析器中缺少errorMessage来确认这一点。你可以在普朗克上看到这一点,点击危机中心下的任何危机。您将不会看到正在显示的错误消息。

如果模块没有延迟加载(即我在根模块中显式地加载它),解析器现在是一个单例,并且我在ErrorComponent中显示了错误消息。你可以在普朗克上看到这一点,点击危机中心下的任何危机。您将看到显示错误消息。

我不明白为什么这不起作用,据我所知,CrisisDetailResolver被声明为app/crisis-center/crisis-center-routing.module.ts提供程序块中的单例。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-26 18:56:35

如果有人在这个问题上绊倒了,我发现我的问题是由角度问题引起的,应该尽快解决。

问题是,当前版本的if角2 (2.4.1)将创建一个新的模块(因此,一个新的注入器)与每个导航。这就是为什么我的提供者没有被当作单身。

我提出的GitHub问题可以在这里找到,并包含了对这个问题的更深入的解释:https://github.com/angular/angular/issues/13722

票数 1
EN

Stack Overflow用户

发布于 2016-12-29 23:20:34

根据文档,延迟加载模块的提供程序是模块作用域。看起来像你的案子:https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#!#q-lazy-loaded-module-provider-visibility

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

https://stackoverflow.com/questions/41387854

复制
相关文章

相似问题

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