Angular/Ionic FormGroup、FormArray、FormBuilder……我迷路了

Posted

技术标签:

【中文标题】Angular/Ionic FormGroup、FormArray、FormBuilder……我迷路了【英文标题】:Angular/Ionic FormGroup, FormArray, FormBuilder... I'm lost 【发布时间】:2022-01-23 18:56:27 【问题描述】:

用例:这是一家咖啡店的库存更新页面。

库存项目的定义如下:

interface InventoryData 
  category: string;
  current: number;
  id: string;
  name: string;
  par: number;
  units: string;
  previous?: string;
  supplier: string;
  notes?: string;

在此页面上,我只为每个项目处理 current 级别和 notes?

在表格的底部,我有一个ion-textarea,这是一个供员工写下经理应该知道的任何内容的空间。

所以页面的结构是

HEADER
   SECTION HEADERS ENTERED AUTOMATICALLY ON CHANGE OF CATEGORY

      ITEM[0]                                  <-+
          [ITEM DETAILS]                         |
          [INPUT CURRENT QUANTITY]               |
          [INPUT NOTES]                          |--- Array of similar items with
      ITEM[1]...                                 |    inputs for quantity and notes
      ITEM[2]...                                 |    for each
                                                 |
      ITEM[n]                                  <-+

  GENERAL NOTES SECTION                <---- not part of an item... overall info.

FOOTER

我尝试将页面设置为具有两种单独的表格,一种用于库存项目,另一种用于最后的一般说明。像这样的:

  inventoryForm = this.fb.group(
    items: this.fb.array([]),
  );

  notesForm = this.nb.group(
    notes: [''],
  );

我已经尝试将其设置为单个表单,其中包含数组项以及一个用于一般注释的附加表单域。

但这一切似乎都很混乱。

所以我希望了解有经验的人是如何做到这一点的。这更像是一个策略问题,而不是一个编码问题,但我很高兴能从任何一个方向提出建议。 p>

【问题讨论】:

这是一个非常自以为是的问题......但我的两分钱。我只会有一种形式,我不觉得它很乱。通常后端以某种方式想要数据,这就是我们随后如何构造表单的方式,至少尽可能如此,以便在提交表单时,如果可以将其按原样发送到后端是理想的。 【参考方案1】:

通常在这种矛盾的状态下,我会问自己:

    数据是否在单个 API 中返回? (不意味着严重倾向于两种形式) 更新一个表单中的值是否会影响(验证)另一个表单。 (是的,严重倾向于单一形式,不意味着倾向于两种形式) 组件可重用性是否会产生影响。 (您也可以在 Angular 中创建可重用的表单组件)

在您的情况下,如果两个 from 与单个 API 中的单个按钮一起提交,那么它应该是单个表单。

如果您在单个组件中编写大量代码,它可能看起来很混乱。你总是可以尽可能地划分代码。

 inventoryForm = this.fb.group(
    items: this.fb.array([]),
    notes: [''],
  ); 

只是一个观察: 您的笔记区域看起来更像评论区。

【讨论】:

以上是关于Angular/Ionic FormGroup、FormArray、FormBuilder……我迷路了的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 4 + Angular 6 PWA 样式不起作用/损坏

Angular / Ionic - 处理 JSON“错误”属性

Ionic + Angular POST 请求返回状态 404

国庆福利 | angular2+ionic2源码分享

Angular4/Ionic3如何序列化数据

在 Angular 2、Ionic 2 中返回一个承诺值