关于Angular 2应用程序中各个组件之间数据共享的问题。目前,我的应用程序的结构类似于教程中this one的结构,其中Angular引导AppComponent
,并且从那里路由多个组件。两个问题:
在这种情况下,AppComponent
是其他2个组件的“父”(即教程中的仪表板和英雄)吗?如果是这样,最好将所有数据存储为AppComponent
中的变量,然后根据需要将数据传递给其子项?
或者,通过http获取所有数据并将其缓存在Service中更好吗?为什么呢?
谢谢!
答案 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;
});
}
}
}
您需要注意另一种方法的一点是,准备好将数据提供给子组件。
但这取决于你的用例。