Angular 哪一个是保持逻辑的最佳位置?
我正在处理一个角度应用程序。比如说,当我们实现像onclick某个按钮这样的特性时,调用api,处理数据,在表中显示结果。表数据应该跨页面保留(因此我们需要将变量保留在服务中) 对于实现,首先我们可以从模板开始调用函数,然后在组件中我们可以进行一些检查,并调用一个服务来获取数据。一旦我们得到数据,如果我们想要处理数据,在这种情况下,处理数据的函数应该在组件或服务中 我们可以在服务文件中写入逻辑吗?或者它应该在组件文件中?最好的做法是什么 方法1:Angular 哪一个是保持逻辑的最佳位置?,angular,Angular,我正在处理一个角度应用程序。比如说,当我们实现像onclick某个按钮这样的特性时,调用api,处理数据,在表中显示结果。表数据应该跨页面保留(因此我们需要将变量保留在服务中) 对于实现,首先我们可以从模板开始调用函数,然后在组件中我们可以进行一些检查,并调用一个服务来获取数据。一旦我们得到数据,如果我们想要处理数据,在这种情况下,处理数据的函数应该在组件或服务中 我们可以在服务文件中写入逻辑吗?或者它应该在组件文件中?最好的做法是什么 方法1: getApi() { this.htt
getApi() {
this.http
.get(url)
.subscribe(response=> {
this.afterFetchingProcessData(response); // this might be some function in service file
},error=>{
// handle error
});
}
afterFetchingProcessData(response){
//process the data and assign to variable
this.tabledata = response;
}
或者我们应该遵循下面的模式
方法2:
在组件文件中:
getApi() {
this.service.getApi().subscribe(response=> {
this.afterFetchingProcessData(response); // this might be some function in service file
},error=>{
// handle error
});
}
afterFetchingProcessData(response){
//process the data and assign to variable
this.service.tabledata = response;
}
在服务文件中,只需调用Api并返回响应
getApi() {
return this.http
.get(url);
}
遵循方法1或方法2的最佳实践是什么?为什么?是一个涵盖应用程序需要的任何价值、功能或功能的广泛类别。服务通常是一个具有狭义的、定义良好的用途的类。它应该做一些具体的事情,把它做好
Angular将组件与服务区分开来,以提高模块化和可重用性。通过将组件的视图相关功能与其他类型的处理分离,可以使组件类变得精简高效
理想情况下,组件的工作是实现用户体验,仅此而已。组件应该提供数据绑定的属性和方法,以便在视图(由模板呈现)和应用程序逻辑(通常包括模型的一些概念)之间进行调解
组件可以将某些任务委托给服务,例如从服务器获取数据、验证用户输入或直接登录到控制台。通过在可注入服务类中定义此类处理任务,可以使这些任务对任何组件都可用。您还可以在不同的情况下适当地为同一类服务注入不同的提供商,从而使您的应用程序更具适应性
Angular不执行这些原则。Angular确实帮助您遵循这些原则,使您可以轻松地将应用程序逻辑考虑到服务中,并通过依赖项注入将这些服务提供给组件
控制一块称为视图的屏幕。例如,各个零部件定义并控制教程中的以下每个视图:
应用程序根目录包含导航链接。
英雄名单。
英雄编辑。
您可以定义组件的应用程序逻辑,以支持类内的视图。该类通过属性和方法的API与视图交互
在doc上检查架构
方法2是更好的选择 在我看来-
- 组件-构成表示层,应重点向用户表示并从用户处获取输入
- 服务-做所有其他事情
- 副作用服务-负责API调用等
- 主要服务-封装应用程序的行为
- 具有RxJS主题的基于类的服务
- 组件树中较高位置的页面/容器组件
- 状态管理框架/库中的状态容器或其他选项,如NgRx、Akita、NGXS、可观察的Redux、角度Redux、MobX或NGXF
就这些 您应该在
组件
文件中应用主逻辑,服务
文件最好只用于进行api
调用。这背后有什么原因吗?假设我们从api中得到错误,我们需要在ui上显示错误消息。。我们在哪里