Angular useValue vs useFactory
Angular useValue vs useFactory,angular,Angular,useValue和useFactory提供者之间有什么区别 似乎useFactory返回一个值,而useClass也返回相同的值。 useFactory接受一个工厂函数,该函数预期会返回值,也可能具有依赖项(需要将其他提供程序的实例作为参数传递) 例如,请参见中工厂功能所需的config:ConfigService参数 useValue只是按原样注入的值 useClass需要一个类型名,并从传递的类型创建实例,还解析构造函数参数并将其传递给类(如果有) 还有useExisting,它类似于已
useValue
和useFactory
提供者之间有什么区别
似乎useFactory
返回一个值,而useClass
也返回相同的值。
接受一个工厂函数,该函数预期会返回值,也可能具有依赖项(需要将其他提供程序的实例作为参数传递)useFactory
config:ConfigService
参数
只是按原样注入的值useValue
需要一个类型名,并从传递的类型创建实例,还解析构造函数参数并将其传递给类(如果有)useClass
- 还有
,它类似于已注册提供商的别名。用例是为同一个提供者实例提供不同的密钥useExisting
请参阅以获取示例。
使用值:
将为您提供的任何已分配对象实例分配当前值
useFactory
:它也可以执行相同的操作,您可以根据函数
中的其他依赖项配置factory对象,然后再返回其实例
{
provide: CustomDependency,
useFactory: () => {
if (IS_A) {
return new A();
} else {
return new B();
}
}
}
您可以使用useFactory
配置依赖项
在配置时。与config
phase Angular 1相同,
根据需要修改或形成依赖项的位置
我的基本理解 您可以将is
useValue
大致看作静态赋值;提供程序遵循以下接口:
假设您在使用@Inject(INJECTION\u TOKEN)
时总是需要值'12345'
,那么这将起作用
providers: [
{
provide: INJECTION_TOKEN,
useValue: '12345',
},
],
当使用@Inject(INJECTION\u令牌)
时,它将始终返回“1234”
鉴于
providers: [
{
provide: INJECTION_TOKEN,
useValue: () => '12345',
},
],
将为注入令牌提供一个函数,该函数将返回“12345”
useFactory
期望函数产生注入值。工厂函数的返回值就是注入的值。此,useFactory
提供程序类型使用。可以添加一个可选的deps
数组,允许将参数传递给工厂函数
最后,useClass
将注入器配置为返回令牌的useClass实例。[1]
注入器将提供所提供类的实例。值得注意的是,注入器还将在ClassProvider
[1]界面上提供字段的值类型useClass
的注入依赖项
总之,选择useValue
每次提供相同的注入值*,useFactory
当注入值应在运行时计算,以及useClass
当您希望注入器构造类型的值时