繁体   English   中英

如何在角度6中将值作为可观察值返回

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM