【发布时间】:2019-04-25 22:42:03
【问题描述】:
在 Angular 7 中,如果我们有一个声明为 @Injectable({providedIn: 'root'}) 的服务,它的构造函数什么时候执行?它是在构建使用它的组件(作为依赖项)时执行,还是等到该服务中的方法第一次被调用?
注意: 由于服务是单例的,所以我使用服务的构造函数来初始化一些值。我可以创建一个“Initialize()”方法并在组件的构造函数中调用它,但我发现这种方法有点混乱。
【问题讨论】:
-
最迟在注入组件时,但可能更早(实现细节)。
-
服务实例在注入时创建。如果你不注入它们,它们什么也不做,在你的最终构建中,它们将被摇树。
-
你为什么不直接测试一下?
-
我是,但由于某种原因行为不一致。首次加载路由时,它不会触发服务的构造函数,但是当我刷新浏览器时它会触发!
-
@sdagkas 我也遇到了这种行为
标签: angular typescript angular7