Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Angularjs 需要2纳克角_Angularjs_Validation_Angular_Typescript_Model Driven - Fatal编程技术网

Angularjs 需要2纳克角

Angularjs 需要2纳克角,angularjs,validation,angular,typescript,model-driven,Angularjs,Validation,Angular,Typescript,Model Driven,我在angular 2中创建了一个模型驱动表单,只有在上面的复选框未选中的情况下,其中一个输入字段才能显示出来。 我的问题是,如何仅在复选框未选中时设置所需的输入?在angular 1.x中,我可以通过视图中的ng required=“condition”实现这一点 以下是html: //复选框 <div class="checkbox col-sm-9"> <label> <input type="checkbox" id="getCompany

我在angular 2中创建了一个模型驱动表单,只有在上面的复选框未选中的情况下,其中一个输入字段才能显示出来。 我的问题是,如何仅在复选框未选中时设置所需的输入?在angular 1.x中,我可以通过视图中的ng required=“condition”实现这一点

以下是html:

//复选框

<div class="checkbox col-sm-9">
   <label>
     <input type="checkbox"  id="getCompanyAddress" style="cursor: pointer;" [formControl]="form.controls['address']" >Use the company address 
  </label>
</div>

一种方法是侦听checkbox表单控件中的值更改,并相应地在另一个控件中添加/删除验证器

例如:

this.form.get('checkbox-control').valueChanges.map(
      value => {

          if(value) {
              this.form.get('other-control').setValidators(Validators.required);
          }else {
              this.form.get('other-control').clearValidators();
          }

      }
    );


上述内容适用于Angular 4的最新版本。FormBuilder接受第二个参数,该参数接受用于跨字段验证的验证器:

this.form = fb.group({
        'name': [null,Validators.compose([Validators.required, Validators.minLength(1)])],
        'type': ["en gros",Validators.compose([Validators.required, Validators.minLength(2)])],
        'person':[null,Validators.compose([Validators.required, Validators.minLength(1)])],
        'address':[false,Validators.compose([Validators.minLength(1)])],
        'locality':[null, Validators.compose([Validators.required])],
        'county':[null,Validators.compose([Validators.required])],
        'country':[null,Validators.compose([Validators.required])]
      }
    , { validator: this.crossFieldValidation });
你可以定义它做任何事情

crossFieldValidation(ctrl: FormGroup): ValidationErrors|null {
    let isRequired = ctrl.controls.myCheckbox.value === true;
    let hasValue = ctrl.controls.myMaybeRequiredControlXX.value;
    if (isRequired && !hasValue) return {XXrequired: true};
    return null;
}
要检查显示/ngClass的错误,请使用
form.errors?.XXrequired
crossFieldValidation()
返回的任何键,而不是
form.controls.XX.errors?.required

可能重复的
<textarea [required]="your angular expression">
this.form = fb.group({
        'name': [null,Validators.compose([Validators.required, Validators.minLength(1)])],
        'type': ["en gros",Validators.compose([Validators.required, Validators.minLength(2)])],
        'person':[null,Validators.compose([Validators.required, Validators.minLength(1)])],
        'address':[false,Validators.compose([Validators.minLength(1)])],
        'locality':[null, Validators.compose([Validators.required])],
        'county':[null,Validators.compose([Validators.required])],
        'country':[null,Validators.compose([Validators.required])]
      }
    , { validator: this.crossFieldValidation });
crossFieldValidation(ctrl: FormGroup): ValidationErrors|null {
    let isRequired = ctrl.controls.myCheckbox.value === true;
    let hasValue = ctrl.controls.myMaybeRequiredControlXX.value;
    if (isRequired && !hasValue) return {XXrequired: true};
    return null;
}