[英]How to return value as an observable in angular 6
我想从服务到组件返回值(任何数据)作为可观察的。 经过对可观察对象的挖掘,发现以下解决方案:
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
});
}
}
使用of
像这样:
import { of } from 'rxjs';
...
return of(value);
等效于:
return new Observable(obs => obs.next(value));
不过,如果你想转换一个给定值(例如一个承诺,一个样观察的,一个数组,一个迭代或类似阵列的对象),你可能需要使用from
:
import { from } from 'rxjs';
...
return from(value);
像下面一样返回
import { Observable, of } from 'rxjs';
...
getData(value) : Observable<any> {
// Simple way of sending value using of operator.
return Observable.of(value);
}
希望有帮助!
这是我的工作
在您的服务文件中:
首先我以这种方式宣布我的可观察性
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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.