如何使用工厂提供者? [英] How to use factory provider?
问题描述
我需要将一个服务注入到Angular 2
应用程序中的另一个服务中.
I need to inject a service into another service in an Angular 2
application.
After reading the docs I deduced, that the best approach is to use a Factory Provider. However, two questions have arisen:
1)文档建议创建带有两个代码段"的HeroServiceProvider
类:
1) The docs recommend the creation of a HeroServiceProvider
class with two "code segments":
let heroServiceFactory = (logger: Logger, userService: UserService) => {
return new HeroService(logger, userService.user.isAuthorized);
};
export let heroServiceProvider =
{ provide: HeroService,
useFactory: heroServiceFactory,
deps: [Logger, UserService]
};
我的问题是,班级的总体状况如何?上面的代码段应该添加到哪里?
My question is how should the class generally look like? Where should one add the above code segments?
2)一个人应该/如何使用这家工厂?我知道,应该将其导入为:
2) How should/could one use this factory? I see, it should be imported as:
import { heroServiceProvider } from './hero.service.provider';
@Component({
selector: 'my-selector',
template: `
`,
providers: [heroServiceProvider]
})
然后如何检索和访问所需的参数化服务?
How could then the desired parametrized service retrieved and accessed?
推荐答案
在长时间搜索后,我遇到了要在app_initalizer上注入的相同问题,我发现了以下解决方案.可能对您的情况有帮助.
I faced same issues to inject on app_initalizer, after long search i found the solution below. May be this is help for your scenario.
@NgModule({
imports: [ BrowserModule],
...
providers: [
{
provide: HeroService,
useFactory: heroServiceFactory,
deps: [Logger, UserService],
multi: true
}
]
})
export class AppModule {}
export function heroServiceFactory = (logger: Logger, userService: UserService) => {
return new HeroService(logger, userService.user.isAuthorized);
};
这篇关于如何使用工厂提供者?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!