如何禁用角度动态控制

问题描述 投票:0回答:1

我正在尝试使用此代码创建动态字段

formInputfieldsForm: FormGroup[];

    defaultFields: any = [
        { inputType: 'textbox', inputValues: '' },
        { inputType: 'textbox', inputValues: '' },
      ]
    
     createForm(a?: any, b?: any, c?: any): FormGroup {
        return this.formService.group({
          "inputType": [b, Validators.required],
          "inputValues": [c, Validators.required],
        })
      }
    
     addFields(){
        this.defaultFields.forEach((ele, i) => {
          this.formInputfieldsForm.push(this.createForm(ele?.inputType, ele?.inputValues));
        });
      }

    createFieldsForm(): FormGroup {
    return this.formService.group({
      "inputType": [null, Validators.required],
      "inputValues": [null, Validators.required],
    })
  }

 
  addFields(){
    this.formInputfieldsForm.push(this.createFieldsForm());
  }

每次

addFields
被调用时都会创建新的动态字段

在前端我使用循环来渲染这样的元素

<div *ngFor="let expForm of formInputfieldsForm; let i = index;" [formGroup]="expForm">
 
<select class="hand_symbol" formControlName="inputType"  placeholder="Select Input Type">
                                                <option value="">Select</option>
                                                <option value="textbox">Textbox</option>
                                                <option value="dropdown">Drop Down</option>
                                                <option value="textarea">Textarea</option>
                                              </select>

<input class="form-control" formControlName="inputValues" type="text" placeholder="Enter Values" type="text">
</div>



<span title="Add" (click)="addFields()">add</span>

它现在渲染,我需要默认情况下

inputValues
控件应该被禁用,如果我从选择控件中选择下拉菜单,那么只有它应该被启用

任何解决方案谢谢

angular typescript
1个回答
0
投票

假设

formService
FormBuilder
的实例。创建表单时,数组中的第一项要么是初始值,要么是具有
value
disabled
属性的对象。如果您想最初禁用 inputValues 字段,您可以更改
addField
函数,如下所示:

createFieldsForm(): FormGroup {
  return this.formService.group({
    "inputType": [null, Validators.required],
    "inputValues": [{ value: null, disabled: true }, Validators.required],
  })
}
© www.soinside.com 2019 - 2024. All rights reserved.