我想从服务到组件的返回值(任何数据)都是可观察的。在对可观察对象进行了两次挖掘之后,找到了以下解决方案:
class AppService {
getData(value) {
// do we have any other best way to return value as an observable
return Observer.create((observer) => {
observer.next(value);
});
}
}
class AppComponent implements OnInit {
ngOnInit() {
this.dataService$ = this.appService.getData().subscribe((data) => {
// do some task with data
});
}
}
答案 0 :(得分:2)
像这样使用of
:
import { of } from 'rxjs';
...
return of(value);
等效于:
return new Observable(obs => obs.next(value));
但是,如果要转换给定值(例如Promise,类似Observable的对象,Array,可迭代的对象或类似数组的对象),则可能要使用from
:
import { from } from 'rxjs';
...
return from(value);
答案 1 :(得分:2)
只需返回以下内容
import { Observable, of } from 'rxjs';
...
getData(value) : Observable<any> {
// Simple way of sending value using of operator.
return Observable.of(value);
}
希望获得帮助!
答案 2 :(得分:0)
这就是我要做的
在您的服务文件中:
首先,我以这种方式宣布我的观察力
myObs: BehaviorSubject<any> = new BehaviorSubject([]);
您可以通过一种方法将数据设置到obs中:
var myArray = [1,2,3,4,5];
this.myObs.next(myArray);
如果您希望您的“控制器”订阅此obs,请在您的服务中公开一个getter:
public getMyObs(){
return this.myObs.asObservable()
}
在“控制器”中,您可以这样称呼它:
ngOnInit() {
this.myService.getMyObs().subscribe(datas => {
Do What you want with your datas
}
}