1、当创建一个服务,ng默认为他生成一个注入信息
@Injectable({
providedIn: 'root'
})
这代表该服务被根组件创建,只会实例化一次,是一个全局服务;
2、当带有默认注入信息的服务仅在惰性加载的特性模块中使用时,它就会自动绑定到这个模块,当这个模块被加载时才会实例化,这是ng自动做的优化工作;
3、特别声明某个服务依赖惰性加载的特性模块有2种方法:
①在特性模块里创建一个子模块作为服务的提供商,并在服务的注入信息处声明该子模块是服务的提供商
@Injectable({
providedIn: ServiceModule
})
(此处若直接声明特性模块为提供商,在模块内的组件使用该服务时ng将提示循环依赖警告)
之后在特性模块中导入该子模块。
②在特性模块中声明自己是服务的提供商
providers: [UserService]