Допустим, у меня есть функция в провайдере :
saveCar(car: Car) {
return this.saveCarImages(car).subscribe(
(data:any) => {
if(data[0].seats){
car=data[0];
}
return this.api.put(`/car/${car.id}`, car, {
headers: {
'Content-Type': 'application/json'
}
});
}
)
}
И эта вспомогательная функция в провайдере должна быть выполнена до фактического автомобилясохраняется:
saveCarImages(car: Car) {
return Observable.create((observable) => {
let fileSaver = this.injector.get(FileSaverProvider);
let promisearr = [];
promisearr.push(Observable.create((observable) => {
fileSaver.uploadImage(car.helpImage.file).subscribe(
(data: any) => {
car.helpImageId = data.id;
observable.complete(car);
}
)
})
)
promisearr.push(Observable.create((observable) => {
fileSaver.uploadImage(car.helpImage2.file).subscribe(
(data: any) => {
car.helpImageId2 = data.id;
observable.complete(car);
}
)
}));
return Observable.forkJoin(promisearr);
});
}
И затем у меня есть этот код в файле TS компонента :
this.provider.saveCar(this.car).subscribe(
(response: any) => {
if (response) {
//success
}
},
(error: any) => {
//error
}
);
Но это не работает.Здесь я пытаюсь достичь подписки на this.api.put (car) из файла TS компонента, но сначала мне нужно загрузить образы автомобилей, поэтому this.api.put (car) вложен вsaveImages наблюдаемый.Как я могу подписаться на this.api.put (car) из файла TS компонента?