Angular 2中的数据共享方法

时间:2016-04-15 15:47:10

标签: angularjs angular

关于Angular 2应用程序中各个组件之间数据共享的问题。目前,我的应用程序的结构类似于教程中this one的结构,其中Angular引导AppComponent,并且从那里路由多个组件。两个问题:

  1. 在这种情况下,AppComponent是其他2个组件的“父”(即教程中的仪表板和英雄)吗?如果是这样,最好将所有数据存储为AppComponent中的变量,然后根据需要将数据传递给其子项?

  2. 或者,通过http获取所有数据并将其缓存在Service中更好吗?为什么呢?

  3. 谢谢!

1 个答案:

答案 0 :(得分:2)

从我的观点来看,将数据缓存到服务中更好,因为它对您的应用程序是透明的。此外,异步处理是隐藏的。这是一个示例:

export class SharedService {
  constructor(private http:Http) {
  }

  getData() {
    if (this.cachedData) {
      return Observable.of(this.cachedData);
    } else {
      return this.http.get(...)
            .map(res => res.json())
            .do((data) => {
              this.cachedData = data;
            });
    }
  }
}

您需要注意另一种方法的一点是,准备好将数据提供给子组件。

但这取决于你的用例。