Angular 6 - 无法订阅从服务返回的数据

标签 angular typescript rxjs angular6 observable

我正在尝试在 Angular 中构建一个简单的缓存服务;具有简单的 setter/getter 函数的服务,不同的组件可以从中获取数据。

不幸的是,当订阅此服务以获取数据时,订阅回调永远不会被调用,并且不会检索数据。

catch-service.service.js

import { Injectable } from '@angular/core';
import { Observable, from } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class CacheService {

  cacheData: Observable<any>;

  constructor() { }

  setCacheData(data) {
    this.cacheData = new Observable(data)
  }

  getCacheData() :Observable<any> {
    return from(this.cacheData);
  }
}

component.component.js

...
export class SomeComponent {

  constructor(private cacheService: CacheService) { }

  data = null;

  ngOnInit() {
    this.cacheService.getCacheData().subscribe(resp => {
      console.log(resp);
      this.data = resp;
    });
  }
...

我已将服务注入(inject)到模块类中,并且没有编译错误。组件中的数据从未被设置。

最佳答案

您可以执行如下操作

   export class CacheService {

     //create a method to set and get the cache 
     cacheData: Observable<any>
     setCache: (cachedata: any) {
          var newObservable = new Observable(observer => {
            observer.next(cachedata);
            observer.complete();
          });
          this.cacheData=newObservable;

    }
    getCacheData() :Observable<any>{
        return this.cacheData;
    }

在您的组件上,您可以像下面这样订阅。

service.getCacheData().susbcribe((data)=>{
    //here you will get
});

您还可以查看下面的答案 observable 如何工作

How create observable with parameters in Angular 6?

关于Angular 6 - 无法订阅从服务返回的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53974873/

相关文章:

typescript - redux root reducer 的返回类型

javascript - 重置嵌套的 Observable

node.js - node_modules/ng2-toastr/src/toast-container.component.d.ts(1,48) : TS2305-/node_modules/@angular/core/core"' has no exported member 中的错误

angular - 取消订阅后订阅

node.js - 两台相同型号的笔记本电脑之间的 Angular 编译器速度很慢

javascript - 如何确定 Observable.merge 中哪些 observable 发生了更改?

web-component - angular2 如何在一些流行的浏览器不支持的情况下使用 shadow dom?

Angular 4 Routing 不适用于实时网络应用程序

TypeScript 和 void Q promises

typescript - react native 部分列表 : What are the correct TypeScript types