Gün*_*uer 19
useFactory 采用预期返回值的工厂函数,也可以具有依赖项(需要作为参数传递的其他提供程序的实例)例如,参见如何将从后端渲染的参数传递给angular2 bootstrap方法中config:ConfigService的工厂函数所需的参数
useValue 只是按原样注入的值
useClass 期望一个类型名称,Angular从传递的类型创建一个实例,并解析并将构造函数参数传递给类,如果有的话
还有useExisting一个类似于已注册的提供商的别名.用例是为提供者提供不同密钥的相同实例.
有关示例,请参阅Angular 2使用现有提供程序.
Pan*_*kar 13
useValue: 将分配当前您提供的任何已分配对象实例.
useFactory:它也是这样做的,您可以function在返回其实例之前和之前基于其他依赖项配置工厂对象.
{
provide: CustomDependency,
useFactory: () => {
if (IS_A) {
return new A();
} else {
return new B();
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用
useFactory在配置时配置依赖项.它与config阶段Angular 1相同,您可以根据需要修改或形成依赖关系.
我的基本理解...
你可以useValue大致认为是静态赋值;Provider 遵循ValueProvider接口:
鉴于您'12345'在使用时始终想要该值@Inject(INJECTION_TOKEN),那么这将起作用,
providers: [
{
provide: INJECTION_TOKEN,
useValue: '12345',
},
],
Run Code Online (Sandbox Code Playgroud)
使用时,这将始终返回“1234” @Inject(INJECTION_TOKEN)。
然而,
providers: [
{
provide: INJECTION_TOKEN,
useValue: () => '12345',
},
],
Run Code Online (Sandbox Code Playgroud)
INJECTION_TOKEN将提供一个返回“12345”的函数。
useFactory期望函数产生注入的值。工厂函数的返回值就是注入的内容。这个,useFactoryprovider类型使用FactoryProvider接口。可以添加一个可选数组deps,以允许将参数传递给工厂函数。
最后,useClass,
配置注入器以返回令牌的 useClass 实例。[1]
注入器将提供所提供类的实例。值得注意的是,注入器还将在[1] 接口上提供Type<any>字段的值类型的注入依赖项。useClassClassProvider
总而言之,当应在运行时计算注入值时,以及当您希望注入器构造要提供的值时,请useValue选择每次*提供相同的注入值。useFactoryuseClassType<any>
* 注意:提供的值useValue可以是一个函数,因此如果调用注入的值,则可以生成动态值,因为它是一个函数。
[1]类提供者
| 归档时间: |
|
| 查看次数: |
16745 次 |
| 最近记录: |