我无法想象需要使用工厂供应商的情况。
根据官方文档https://angular.io/docs/ts/latest/guide/dependency-injection.html,情况是一个人可能无法从另一个服务(service -a),但是,工厂功能确实(可以访问service-b)。那么,这样的事情何时会真正发生呢?
我无法想象需要使用工厂供应商的情况。
根据官方文档https://angular.io/docs/ts/latest/guide/dependency-injection.html,情况是一个人可能无法从另一个服务(service -a),但是,工厂功能确实(可以访问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
.