何时使用Angular 2工厂功能?

前端之家收集整理的这篇文章主要介绍了何时使用Angular 2工厂功能?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法想象我需要使用工厂提供商的情况.

根据官方文档https://angular.io/docs/ts/latest/guide/dependency-injection.html,情况是一个人可能无法从另一个服务(service-a)中访问服务(service-b),但工厂函数确实(可以访问service-b).那么,什么时候真的会发生这样的事情呢?

解决方法

您只需传递课程即可注册提供者

providers: [MyService]

这只适用于Angulars DI可以实例化MyService的情况.

如果你有例如

@Injectable()
class MyService {
  constructor(private http: Http,private String configVal) {}
}

然后DI无法创建实例,因为String不是提供者的有效密钥(原始类型不能作为提供者密钥.

如果您需要,可以使用像

providers: [
    {
      provide: MyService,useFactory: (http) => {
        return new MyService(http,'http://mydbserver.com:12345');
      },deps: [Http]
    }
]

通过这种方式,您可以完全控制新实例的创建方式,而Angulars DI只需要知道它需要使用Http实例调用工厂函数.

猜你在找的Angularjs相关文章