Если вы привыкли работать с Observable, а не с Promise, попробуйте Observable.fromPromise следующим образом:
let myPromise = getSomePromise();
let myObservable = Observable.fromPromise(myPromise);
Из того, что я вижу в вашем примере, ваше выражение return неуместно. Вам даже не нужно обещание, и вы должны сделать что-то вроде ниже.
В вашем файле контроллера:
getRailController(pageType): Observable<RailDataAll[]> {
return this.homeService.getRails(pageType).pipe(mergeMap((data: CarouselData[]) => {
// Concat the new and old rail data.
data = { ...this.railsData, ...data };
// Get the keys from the rails object.
this.railIds = Object.keys(data);
// Append the railoption to every rail.
this.railIds.map((railId: string) => {
this.railInfo = this.homeService.getRailInfo(railId); // Get the rail info for corresponding rail id.
data[railId].railOptions = this.homeService.getRailOptions(this.railInfo); // Get the rails options.
// console.log(data);
});
// Assign data to the rails.
this.railsData = data;
console.log(this.railsData);
this.homeData = this.transformObj.transformgetRails(this.railsData);
console.log(this.homeData);
return of(this.homeData);
});
}
В вашем файле компонента:
displayRails(pageType: string): void {
this.preloaderService.show();
this.homeController.getRailController(pageType).subscribe(
data => {
this.railControlledDatas = data
console.log('k',this.railControlledDatas);
this.preloaderService.hide();
});
}