providers: [{ provide: JerrySandBoxService },
{ provide: GreetingService, useClass: EnglishGreetingService},
{
provide: 'apiUrl',
useValue: 'http://localhost:4200/heros'
},
{ provide: APP_CONFIG, useValue: HERO_DI_CONFIG }
],
在Angular @NgModule修饰的module里能够指定providers数组的值,
其中provider类型定义如下:
export declare type Provider = TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | any[];
位置:
这几种方式的实现分别位于Angular core.js中的providerToFactory方法里的isValueProvider, isFactoryProvider, isExistingProvider判断条件的分支里:
工厂提供商 FactoryProvider
既然是函数方式创建对象,那么就拥有了在运行期动态创建的能力。例如区分是否是生产模式来创建不同的对象。
onst MessageServiceFactory = () => {
if (environment.production) {
return new MessageService();
} else {
return new NewMessageService();
}
};
{
// ...
providers: [
{
provide: MessageService,
useFactory: MessageServiceFactory
}
]
// ...
}
要获取更多Jerry的原创文章,请关注公众号"汪子熙":