【发布时间】:2018-10-19 08:06:08
【问题描述】:
据我所知,直到 angular 6,所有 @Ngmodule 提供程序都在根注入器上注册并在主包中提供服务,即使只有延迟加载的模块使用它们。
唯一的例外是如果我们想create a non singleton services in a component level。
我想创建一个单例服务,该服务仅对特定模块(而不是根模块)可见,因此不会在主热切加载的包中提供服务。
在 Angular 6 中,模块将不再需要通过 "providers" 引用服务,而是服务现在将引用该模块。
这可以通过@Injectable 注释和provideIn 属性来完成。
我没有找到一个很好且清晰的示例来说明如何添加不是“root”的模块名称,如下所示:
@Injectable({ provideIn: <MyLocalModule>})
export class SimpleServiceForLocalUseOnly { […] }
在上面的 sn-p 中导入 LazyLoaded 模块并将其写为“MyLocalModule”会导致循环依赖的警告。 我可以通过将服务移动到其他模块来解决这个问题,但是我失去了最初的目的。
搜索参考列表:
https://blog.angular.io/version-6-of-angular-now-available-cc56b0efa7a4
https://jaxenter.com/new-angular6-143995.html
https://www.ngdevelop.tech/angular-6-features/
https://blog.ninja-squad.com/2018/05/04/what-is-new-angular-6/
http://ankitsharmablogs.com/getting-started-with-angular-6-0/
【问题讨论】:
标签: angular typescript web frontend angular6