使用一个REST调用的Angular2多个组件

时间:2016-02-11 07:57:44

标签: rest angular angular2-directives angular2-services

我是Angular2应用程序的一部分(我们使用beta3),问题如下:

通常我们有一个组件使用一些使用一些休息调用的服务,组件显示数据。大。

但是我们确实有一个包含6个以上组件的页面,所有这些组件都使用相同的REST调用...(后端返回所有这些组件的数据),并且每次调用6次REST是没有意义的组件,如果我们进行一些客户端缓存,也会很奇怪。

是否有开箱即用的东西?还是一个处理这种情况的模式?

感谢。

2 个答案:

答案 0 :(得分:4)

只需在共享服务中执行此操作即可。如果仅在export class MyComponent { constructor(private dataService:MyService) { dataService.getData().subscribe(data => { this.data = data; }); } } 中添加它,则每个组件将注入相同的实例。将数据存储在服务中,每个组件都可以访问它

export class MyService {
  getData() {
    if(!this.data) {
      return http.get(...).map(...).subscribe(data => { this.data = data;});
    } 
    return this.data;
  }
}
Player

答案 1 :(得分:1)

@Günter的答案真的很有意义!

我不知道您的代码是否有条理,但也可以多次订阅可观察的代码。要做到这一点,您需要使用share运算符使其“热”:

export class MyService {
  dataObservable:Observable;

  initDataObservable() {
    this.dataObservable = http.get(...).map(...).share();
  } 
}

不使用share运算符,相应的请求将执行多次(每个订阅一次)。

您可以注意到,一旦在observable上调用了subscribe方法,就会执行该请求。