我的服务代码是:
booking_type()
{
return this.http.get('https://booking.beglammed.com:3001/api/customer /getAreaCategoryDetails');
}
services_detail()
{
return this.http.get('https://booking.beglammed.com:3001/api/customer/getAreaCategoryDetails');
}
我将它订阅到组件中,组件代码是
ngOnInit() {
this.alldata.services_detail().subscribe( (response : Response )=>
{
let data = response.json();
this.ServicesArea = data.data.servingAreas;
}
);
this.alldata.booking_type().subscribe( (response : Response )=>
{
let data = response.json();
this.Bookings_detail = data.data.homeScreenData;
}
);
}
现在我使用 this.booking详细信息和 this.SevicesArea 提取出booking_id和area_id。现在我需要在下一个api中传递这些值area_id和booking_id 。那我怎么能在服务中使用这些值,因为我在服务中调用下一个api .`
答案 0 :(得分:1)
为什么不在你的组件中简化它。
let data = response.json();
this.ServicesArea = data.data.servingAreas;
this.alldata.setServicesArea(this.ServicesArea);
}
);
this.alldata.booking_type().subscribe( (response : Response )=>
{
let data = response.json();
this.Bookings_detail = data.data.homeScreenData;
this.alldata.setBookings_detail(this.Bookings_detail);
}
然后在您的服务中,您有两个选项使用getter ir call api call。
api看起来像this.http.get(https://booking.beglammed.com:3001/api/books/${this.getBookings_detail()}/${(this.getServicesArea()}
确保使用`作为引号而不是正常的。不能像正常原因那样做stackoverflow搞砸然后导致使用相同的引用来显示代码样式... http Angular get example
或者使用方法getBooks(servicesArea: any, bookings_detail: any)
。如果在同一个异步调用中想要相同的值,则将第二个调用放在另一个调用中。
答案 1 :(得分:0)
您可以使用Observable forkJoin
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/forkJoin';
ngOnInit() {
Observable.forkJoin([this.alldata.services_detail(), this.alldata.booking_type()]).mergeMap((data:any[]) => {
this.ServicesArea = data[0].data.servingAreas;
this.Bookings_detail = data[1].data.homeScreenData;
//Here you can do whatever you want, bevor you request SomeData4
return this.alldata.yournewmethod(this.ServicesArea, this.Bookings_detail); // pass the values to a new service method
}).subscribe((data) => {
console.log(data); // your data
});
}