это то, что я пытался и смог достичь своей цели, но не уверен, какое влияние это оказывает на производительность и является ли это правильным способом использования наблюдаемых?
getCmpData(): Observable<any>{
this.spinner.show();
let userGroups = []
if(userData != null){
userData = JSON.parse(userData);
if(userData.user && userData.user.userGroups &&
userData.user.userGroups.length){
userGroups = userData.user.userGroups;
}
}
return Observable.create(observer => {
this.httpService.getData('cmpInfo/', userGroups)
//.map(res => res.json())getting ts error so commented out
.subscribe((data) => {
if (data[0].status != 'ERROR') {
observer.next(data[0].results);// each component has different logic to use this data.
observer.complete();
}else{
this.spinner.hide();
this.modalService.showErrorMessage();
observer.unsubscribe();
}
}, (error) => {
this.spinner.hide();
this.modalService.showErrorMessage();
observer.unsubscribe();
});
});
}
}
// код компонента.
this.cmpService.getCmpData().subscribe(
(data) => {
// further logic
});