RXJS服务http调用在另一个调用之后返回null

时间:2019-06-07 16:53:35

标签: angular service rxjs components observable

我通过http通话提供服务:

我使用nginit初始化组件,然后离开视图,转到详细信息视图,并调用发布服务,我的组件返回null并中断应用程序,我必须重新加载页面。

在服务和组件中使用可观察对象是否有最佳实践?

我已经尝试研究多播,但是我还没有发现与我的问题有关的任何东西。

服务电话

getProducts() {
    this.headers = this.headers.set('Content-Type', 'application/json')
      .set('id', 1)
      .set('active', '1')
      .set('token', 1);
    return this.http.get(this.env + 'Products.json', { headers: this.headers });
  }

我通常希望我的响应数组像在ngoninit上一样,但是会变为null。

更新

通过在组件装饰器上声明我的服务来使其正常工作

@Component({
  selector: 'app-deal-detail',
  templateUrl: './deal-detail.component.html',
  styleUrls: ['./deal-detail.component.scss'],
  providers: [ AService, BService, CService ]
})

1 个答案:

答案 0 :(得分:0)

我通过为组件提供provider属性解决了我的问题,issue-with-rxjs-behaviorsubjects-subscriber-not-being-notified-of-value-change引用了我

显然Angular将服务读取为单例。