【问题标题】: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 的新手,也是设计网站时语言的最佳架构的新手。我:

  1. 为每个数据表创建一个新组件,将 url 传递给服务?

  2. 为每个数据表创建一个新组件,为每个url创建一个新服务?

  3. 使用控制器创建单个数据表组件并让它连接到相同的服务,传递 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。

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 1970-01-01
      • 2020-07-10
      • 2018-07-24
      • 2020-03-18
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 2020-07-18
      相关资源
      最近更新 更多