如何将另一个组件的输出值绑定到我的组件中的表单控件

Posted

技术标签:

【中文标题】如何将另一个组件的输出值绑定到我的组件中的表单控件【英文标题】:how do i bind output values of another component to a form-control in my component 【发布时间】:2020-01-25 18:07:53 【问题描述】:

这是我的 html 代码,基本上是一个表单。

<form [formGroup]="calculatedForm" fxLayout="column" fxLayoutGap="15px" fxLayoutAlign="start space-betwen">
    <label for="category">CATEGORY</label>
      <app-toggle-button-group
        [items]="categories"
        [selectedItem]="getselectedCategory()"
        (valueChange)="updateCategory($event)"
        [disableButtons]="calculatedForm.value.system">
      </app-toggle-button-group>

      <label for="input_interval">INTERVAL</label>
      <app-toggle-button-group
        [items]="inputIntervals"
        [selectedItem]="getselectedInterval()"
        (valueChange)="updateInterval($event)"
        [disableButtons]="calculatedForm.value.system">
      </app-toggle-button-group>

      <label for="aggregation">AGGREGATION</label>
      <app-toggle-button-group
        [items]="aggregations"
        [selectedItem]="getselectedAggregation()"
        (valueChange)="updateAggregation($event)"
        [disableButtons]="calculatedForm.value.system">
      </app-toggle-button-group>

      <app-kpi-unit 
        [selectedUnitID]="selectedUnitId()" 
        (changedUnitID)= "selectUnit($event)"
        [disableSelect]="calculatedForm.value.system">
      </app-kpi-unit>

    </form>

这是我在控制器中的表单属性

  calculatedForm = this.formBuilder.group(
    id: new FormControl(''),
    identifier: new FormControl(''),
    category: new FormControl('', [Validators.required]),
    aggregation: new FormControl(null, [Validators.required]),
    input_interval: new FormControl('', [Validators.required]),
    operator: new FormControl('', [Validators.required]),
    unit_id: new FormControl(null),
    org_unit: new FormControl('', [Validators.required]),
    system: new FormControl(false),
    deleted: new FormControl(false),
    assignedKpiId: new FormControl(null)
  );

正如您在 html 代码中看到的那样,我正在使用组件发出的事件中的方法来更新我的表单控件

updateCategory(category: buttonGroupType) 
    this.calculatedForm.controls['category'].patchValue(category.name);
  

但我的要求是使用 formcontrolName 而不是使用方法进行绑定。是否可以避免更新方法

【问题讨论】:

【参考方案1】:

你为什么不使用formControl

这可以将您的 Html 绑定到表单控件 &lt;input [formControl]="category"&gt;&lt;/input&gt;

【讨论】:

以上是关于如何将另一个组件的输出值绑定到我的组件中的表单控件的主要内容,如果未能解决你的问题,请参考以下文章

vue表单控件绑定+自定义组件

Vue表单控件绑定

antd表单组件的双向绑定

受控组件——受控组件简写——受控表单组件-——复选框取消全选等

通过多个组件进行双向绑定

将另一个表中的值添加到我的结果集中(例如,查找 user_id 的用户名)