角反应形式,如何将2个具有不同formGroup的相似形式放到一个组件中?

时间:2018-06-23 15:45:55

标签: angular angular-reactive-forms

所以说我有两种类似的形式:购买形式和出售形式。

“购买”表单有4个输入项:名称,价格,日期,购买原因

销售表格有4个输入项:名称,价格,日期,出售原因

由于这两个表单非常相似,因此我想在一个组件中创建它们两者(并使用表单顶部的按钮在它们之间进行切换)。这样,当我更改样式或决定将输入的“名称”更改为“模型名称”时,两种形式都将显示更改。

我也想使用不同的函数来提交这两种方法。

到目前为止,我尝试使用ngIf隐藏输入(取决于是“购买”还是“出售”),然后单击2个按钮并使用(单击)提交表单,而不是使用(ngSubmit)。

(something like this)
<form [formGroup]="positionForm" >

  <label for="ticker">Ticker:</label>
  <input formControlName="ticker" placeholder="ticker symbol"/>
  <input formControlName="price" placeholder="buy price" />
  <input formControlName="date" placeholder="purchase date" />

  <input *ngIf="buy" formControlName="sellReason" placeholder="sell reason" />
  <input *ngIf="!buy" formControlName="buyReason" placeholder="buy reason" />

  <button *ngIf="buy" [disabled]="positionForm.invalid"type="submit"(click)="saveBuyDetailForm(positionForm.value)">Save</button>
  <button *ngIf="!buy" [disabled]="positionForm.invalid" type="submit"(click)="saveSellDetailForm(positionForm.value)">Save</button>


</form>

但是,我想在表单的所有字段上使用Validators.required。在我的实现中,当我隐藏输入时,该表格将无效,因此无法提交。

我该如何在自己的实例中实现我的2种相似形式?并可能根据所选择的表单将它们放入不同的formGroup中?

0 个答案:

没有答案