我想知道您应该如何构建一个调用后端的应用程序。
在服务中包装HTTP调用似乎是一种自然的方式,但是如何/在何处保持数据的一致性?例如。我有一个显示某种待办事项列表的组件,该列表是从后端OnInit
检索的。现在,当离开该组件路由并再次路由回时,将重置其所有数据。当然,您可以再次调用后端,但是将数据保留在某种服务(甚至是HTTP服务)中以供进一步使用不是更有利吗?
进一步说明:
class Service {
storedData: number[] = []
allObjects: BehaviorSubject<any> = new BehaviorSubject()
...
getObj(id) {
if (!this.storedData.includes(id)) {
this.getDataFromServer(id)
}
return this.allObjects.pipe(
map(objects => objects.find(obj => obj.id === id)),
filter(obj => obj && true)
)
}
getDataFromServer(id) {
return this.http.get(id).pipe(
tap(obj => {
this.storedData.push(id)
this.allObjects.put(id, obj)
})
)
}
}
这将是一种可行的方法,还是有其他方法来处理这种情况?
此外,使用需要多个服务来填充其所有字段的对象的最佳方法是什么。 (对象:{a: number, b: number}
,a
通过AService
检索,b
通过BService
检索。)>
您将这些对象存储在何处(将AService
注入BService
并将其存储在BService
中/将两者都注入到向请求组件提供数据的第三项服务中?)
并且最好的存储方式是什么?
我想知道您应该如何构建一个调用后端的应用程序。在服务中包装HTTP调用似乎是一种自然的方式,但是如何/在何处保存数据以用于...
因此,首先,当您从任何页面路由回该特定URL时,由于您的OnInit中包含服务,因此将调用您的后端。
[Victor Savkin,曾是Google Angular核心团队的成员,构建了依赖项注入,更改检测,表单和路由器模块,并在Managing State in Angular Applications上写了一篇出色的文章。