Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在表单数组中禁用被动表单选择表单控件_Angular_Angular Reactive Forms_Angular Forms_Form Control_Formarray - Fatal编程技术网

Angular 在表单数组中禁用被动表单选择表单控件

Angular 在表单数组中禁用被动表单选择表单控件,angular,angular-reactive-forms,angular-forms,form-control,formarray,Angular,Angular Reactive Forms,Angular Forms,Form Control,Formarray,我试图通过检查被动表单中的条件来禁用选择表单控件,但我无法在表单组件中动态执行该操作。想知道以前有没有人做过 let control = <FormArray>this.scheduleForm.controls.schedulingAvailability; this.scheduleObj.schedulingAvailability.forEach(x => { control.push(this.formBuilder.group({ day: x.day,

我试图通过检查被动表单中的条件来禁用选择表单控件,但我无法在表单组件中动态执行该操作。想知道以前有没有人做过

let control = <FormArray>this.scheduleForm.controls.schedulingAvailability;
this.scheduleObj.schedulingAvailability.forEach(x => {
  control.push(this.formBuilder.group({
    day: x.day,
    startTime: x.startTime,
    status: x.status
  }))
  if(x.status) {
    this.scheduleForm.get('x.startTime').enable();
  } else {
    this.scheduleForm.get('x.startTime').disable();
  }
})
let control=this.scheduleForm.controls.schedulingAvailability;
this.scheduleObj.schedulingAvailability.forEach(x=>{
控件。推送(this.formBuilder.group({
日:x日,
开始时间:x.startTime,
状态:x.status
}))
如果(x.status){
this.scheduleForm.get('x.startTime').enable();
}否则{
this.scheduleForm.get('x.startTime').disable();
}
})
在我的组件中,我将其设置如下

<div formArrayName="schedulingAvailability">
    <div *ngFor="let d of scheduleForm.controls.schedulingAvailability.controls; let i=index">
        <div formGroupName="{{i}}">
            <div class="row">
                <div class="col-md-1">
                    <label class="checkbox">
                        <input type="checkbox" formControlName="status">
                        <span class="checkbox__input"></span>
                        <span class="checkbox__label">{{ scheduleObj.schedulingAvailability[i].day }}</span>
                    </label>
                </div>
            <div class="col-md-2">
                <div class="form-group__text select">
                    <select formControlName="startTime">

{{scheduleObj.schedulingAvailability[i].day}

没有像
this.scheduleForm.get('x.startTime')这样的变量。
startTime
出现在formArray
schedulingAvailability
中。所以,您需要在迭代中访问formarray的当前索引。因此,您要做的是将
forEach
改为
for
循环,这样我们就可以获得迭代的当前索引:

let control=this.scheduleForm.controls.schedulingAvailability;
for(设i=0;i

编辑:由于该值可以被禁用,我们需要记住它不包含在表单值中。因此,如果您还想获得禁用的值,请使用
this.scheduleForm.getRawValue()

到底是什么问题?什么是
我不能在表单组件中动态执行它。
的意思是什么?对不起,Alex,这是错误消息-core.es5.js:1020错误类型错误:无法读取null的属性“disable”