【问题标题】:Advice on methodology for changing datasource of angular material2 datatable关于更改角度材料2数据表数据源的方法的建议
【发布时间】:2018-02-16 04:52:01
【问题描述】:
我有一个我设计的 Angular Material2 数据库组件,它基于一个服务填充,该服务使用 django rest 框架对我的 Django 数据库进行 http 调用。我需要在我的网站中展示其中的几个数据表,每个数据表都有不同的数据,使用不同的 URL 指向相同的后端数据源来获取数据。我是 Angular 的新手,也是设计网站时语言的最佳架构的新手。我:
为每个数据表创建一个新组件,将 url 传递给服务?
为每个数据表创建一个新组件,为每个url创建一个新服务?
使用控制器创建单个数据表组件并让它连接到相同的服务,传递 url?是否应该使用指令来修改数据表的来源?
感谢您对此的帮助。我搜索了多个地方,但找不到我所遇到的情况的示例。将一个数据表连接到外部源在设计中非常简单,但多个表是如何以 DRY 和组件方式最好地设计它的一个谜。
【问题讨论】:
标签:
django
angular
django-rest-framework
angular-material2
【解决方案1】:
与编程中的一切一样......这取决于。在不了解您的应用程序和要求的情况下很难提出建议。
以下是一些一般注意事项:
如果唯一的区别是数据源(没有其他 UI 更改或不同的功能),那么多个组件似乎不是很干燥。
例如,如果您有一个显示活跃客户和非活跃客户的组件,则只有数据源不同,多个组件可能没有意义。
OTOH,如果您有一个显示客户的组件和另一个显示产品的组件,那么将它们设为两个不同的组件是有意义的。
在服务方面,我看到一些公司构建了一个“通用”数据检索服务,该服务知道如何获取给定 URL 的任何数据。然后是知道如何处理每种类型数据的单一用途服务。单一用途服务各自称为通用服务。
但您的里程可能会有所不同。
【解决方案2】:
我认为,你可以这样做:
1) Datatable 是您需要在视图中使用的组件。
2) 您想使用指令在数据表组件中提供数据。你也可以传递选项。
3) 您需要创建一项服务来管理您的数据类型的 CRUD。
4) 您可以创建一个模型来定义您的数据类型
示例:显示用户表
您在视图中使用md-table 组件。
<mat-table [dataSource]=”myDataArray”>
...
</mat-table>
您创建一个服务 UserService 以从网络服务获取您的用户数组:
import { Injectable } from '@angular/core';
@Injectable()
export class UserService {
public getAll():Observable<User>{
...
}
constructor() { }
}
你在你的组件中使用你的服务:
getUsers(): void {
this.userService.getAll()
.subscribe(users => this.myDataArray = users);
}
constructor(private userService: UserService) { }
您应该用您的数据类型替换 User。