我有一个我设计的Angular Material2数据库组件,它基于一个服务填充,该服务使用django rest框架对我的Django数据库进行http调用。我需要在我的网站上提供几个这样的数据表,每个数据表使用不同的数据来使用不同的数据到同一个后端数据源来获取数据。我是Angular的新手,也是设计网站时语言的最佳架构。我:
为每个数据表创建一个新组件,将URL传递给服务?
为每个数据表创建一个新组件,为每个网址创建一个新服务?
使用控制器创建单个数据表组件并将其连接到同一服务,并传递URL?是否应该使用指令来修改数据表的来源?
感谢您的帮助。我搜索了多个地方,无法找到我所拥有的情况的一个例子。将一个数据表连接到外部源是非常简单的设计,但多个表格是如何以干燥和组件方式最好地设计它的一个谜。
答案 0 :(得分:1)
与编程中的所有内容一样......这取决于。在不了解您的申请和要求的情况下提出建议真的很难。
以下是一些一般性考虑因素:
如果唯一的区别是数据源(没有其他UI更改或不同功能),那么多个组件似乎不会很干。
例如,如果您有一个显示活动客户和非活动客户的组件,则只有数据源不同,而且多个组件可能没有意义。
OTOH,如果您有一个显示客户的组件和另一个显示产品的组件,那么使它们成为两个不同的组件是有意义的。
在服务方面,我一直看到公司建立了一个"通用目的"数据检索服务,知道如何获取给定URL的任何数据。然后是了解如何使用每种类型数据的单一用途服务。单一用途的服务都称为通用服务。
但你的里程可能会有所不同。
答案 1 :(得分:1)
我想,你可以这样做:
1)Datatable是您需要在视图中使用的组件。
2)您希望使用指令在数据表组件中提供数据。你也可以传递选项。
3)您需要创建一个服务来管理您的数据类型的CRUD。
4)您可以创建一个模型来定义您的数据类型
示例:显示用户表
您在视图中使用md-table组件。
<mat-table [dataSource]=”myDataArray”>
...
</mat-table>
您创建一个服务UserService以从Web服务获取您的用户数组:
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) { }
您应该根据您的数据类型替换用户。