【问题标题】:how to disable a form element of formArray in reactive formGroup using Angular5如何使用Angular5在反应式formGroup中禁用formArray的表单元素
【发布时间】:2018-04-04 15:28:23
【问题描述】:

我在 formArray 中有两个下拉菜单。

<select formControlName="access" (change)="checkValue($event)" >
  <option[value]="1">Admin</option>
  <option[value]="2">Customer</option>
</select>

<mat-select  formControlName="regions" multiple>
  <mat-option *ngFor="let region of regionArray" [value]="region.regionId">{{region.description}}</mat-option>
</mat-select>

如果选择的访问权限是管理员,我将禁用区域选择。

checkValue(event) {  
    if (event.currentTarget.value === "1") {
        return this.myForm = this.fb.group({
                user: this.fb.array([this.disableDetail(),   ])
            }); 
    } else {  
        return this.myForm = this.fb.group({
                user: this.fb.array([this.enableDetail(),    ])
            }); 
    } 
}

enableDetail() {    
    return this.fb.group({
        regions: [{value:'',Validators: Validators.required, disabled:false}]     });   
    }

disableDetail() {
    return this.fb.group({
        regions: [{value:'', disabled:true}]    });  
}

我面临的问题是它会影响其他表单数组。 我希望如果我选择作为管理员的下拉值应该禁用并仅为该特定表单数组选择区域下拉列表的所有值。

【问题讨论】:

  • new FormGroup({ 'regions': new FormControl({value:null,disabled: true}, Validators.required) })

标签: angular angular5 angular-reactive-forms


【解决方案1】:

HTML

<select formControlName="access" (change)="checkValue($event)" >
  <option[value]="1">Admin</option>
  <option[value]="2">Customer</option>
</select>

<mat-select [disabled]="isAdmin" formControlName="regions" multiple>
  <mat-option *ngFor="let region of regionArray" [value]="region.regionId">{{region.description}}</mat-option>
</mat-select>

组件

isAdmin: boolean;
checkValue(event) {  
    this.isAdmin = event.currentTarget.value === "1";
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 2020-09-06
  • 1970-01-01
  • 2019-08-15
  • 2019-08-07
相关资源
最近更新 更多