目前我的应用程序有一个数据服务,它向服务器发送一个http请求以获取数据。每个组件都会对该服务进行单独调用以获取所需的数据。有多个组件构建一个HTTP请求
public getHospitals() {
return this._http.get(this.baseUrl + "/hospitals/")
.map(res => res.json())
.map(json => automapper.map(typeof (JSON), Hospital, json));
}
public getClinics() {
return this._http.get(this.baseUrl + "/clinics/")
.map(res => res.json())
.map(json => automapper.map(typeof (JSON), Clinic, json));
}
当我加载我的示例页面时,我有一个医院组件和一个诊所组件。这两个组件调用数据服务中的相应方法。
我最近扩展了服务器以允许一个请求指定它需要的数据。下面是一个如何调用它的例子。
public getLocalData(body) {
const headers = new Headers({ "Content-Type": "application/json" });
const options = new RequestOptions({ headers });
return this._http.post(this.baseUrl, JSON.stringify(body), options)
.map(res => res.json());
}
public getHospitals() {
return this.getLocalData(["Hospitals"])
.map(json => automapper.map(typeof (JSON), Hospital, json.Hospitals));
}
public getClinics() {
return this.getLocalData(["Clinics"])
.map(json => automapper.map(typeof (JSON), Clinic, json.Clinics));
}
这可能不是这样调用,这将返回回的所有数据:const localData = this.getLocalData(["Hospitals", "Clinics"]);
我的问题是,我该如何修改这两个组件来打造为getLocalData
方法的身体参数,只做一个http请求?
编辑:我也想扩展这个,以便最终我可以说10 +组件,每个组件都有自己的一组本地数据请求。
这是如何扩展和扩展的?一旦我找到20种不同类型的数据呼叫,我该怎么办?并非所有这些调用都需要为每个页面进行,所以我不想要求所有这些调用。 – Stout01
没有什么说你在问题中有两个以上的组件。因此请根据您的实际要求更新您的问题。如果你想为几个独立的组件提出一个请求,我认为你应该有一个知道它的子组件(诊所,医院等)的父组件。当所有子组件加载(ngAfterViewInit)时,父组件可以执行网络请求,并通过Input参数将Observable传递给子组件。 –