如何使用工厂提供者? [英] How to use factory provider?

查看:98
本文介绍了如何使用工厂提供者?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要将一个服务注入到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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆