且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Angular 依赖注入 useClass 的实例创建位置

更新时间:2022-09-13 12:36:49

用@NgModule在providers定义了MyService token用useClass来提供:Angular 依赖注入 useClass 的实例创建位置Angular 依赖注入 useClass 的实例创建位置Angular 依赖注入 useClass 的实例创建位置Angular 依赖注入 useClass 的实例创建位置Angular 依赖注入 useClass 的实例创建位置Angular 依赖注入 useClass 的实例创建位置值提供者:useValue

useValue 键让你可以为 DI 令牌关联一个固定的值。 使用该技巧来进行运行期常量设置,比如网站的基础地址和功能标志等。 你也可以在单元测试中使用值提供者,来用一个 Mock 数据来代替一个生产环境下的数据服务。


一个值-提供者的值必须在指定之前定义。


这一点和其他类型的提供者不同。

其它类型的提供者都会惰性创建它们的值,也就是说只在需要注入它们的时候才创建。


类提供者:useClass

useClass 提供的键让你可以创建并返回指定类的新实例。


你可以使用这类提供者来为公共类或默认类换上一个替代实现。比如,这个替代实现可以实现一种不同的策略来扩展默认类,或在测试环境中模拟真实类的行为。


useClass 在 SAP Spartacus 里的用法举例:


Angular 依赖注入 useClass 的实例创建位置Angular 依赖注入 useClass 的实例创建位置提供者使用 DateLoggerService 来满足 LoggerService。该 LoggerService 在 AppComponent 级别已经被注册。当这个组件要求 LoggerService 的时候,它得到的却是 DateLoggerService 服务的实例。


这个组件及其子组件会得到 DateLoggerService 实例。这个组件树之外的组件得到的仍是 LoggerService 实例。