當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript AbstractControl.setValidators方法代碼示例

本文整理匯總了TypeScript中@angular/forms.AbstractControl.setValidators方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript AbstractControl.setValidators方法的具體用法?TypeScript AbstractControl.setValidators怎麽用?TypeScript AbstractControl.setValidators使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在@angular/forms.AbstractControl的用法示例。


在下文中一共展示了AbstractControl.setValidators方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: validateIf

  /**
   * Validate form control if condition is true with validators.
   *
   * @param {AbstractControl} formControl
   * @param {Function} condition
   * @param {ValidatorFn[]} conditionalValidators List of validators that should only be tested
   * when the condition is met
   * @param {ValidatorFn[]} permanentValidators List of validators that should always be tested
   * @param {AbstractControl[]} watchControls List of controls that the condition depend on.
   * Every time one of this controls value is updated, the validation will be triggered
   */
  static validateIf(
    formControl: AbstractControl,
    condition: Function,
    conditionalValidators: ValidatorFn[],
    permanentValidators: ValidatorFn[] = [],
    watchControls: AbstractControl[] = []
  ) {
    conditionalValidators = conditionalValidators.concat(permanentValidators);

    formControl.setValidators(
      (
        control: AbstractControl
      ): {
        [key: string]: any;
      } => {
        const value = condition.call(this);
        if (value) {
          return Validators.compose(conditionalValidators)(control);
        }
        if (permanentValidators.length > 0) {
          return Validators.compose(permanentValidators)(control);
        }
        return null;
      }
    );

    watchControls.forEach((control: AbstractControl) => {
      control.valueChanges.subscribe(() => {
        formControl.updateValueAndValidity({ emitEvent: false });
      });
    });
  }
開發者ID:IlsooByun,項目名稱:ceph,代碼行數:43,代碼來源:cd-validators.ts

示例2: validateIf

 /**
  * Validate form control if condition is true with validators.
  *
  * @param {AbstractControl} formControl
  * @param {Function} condition
  * @param {ValidatorFn[]} validators
  */
 static validateIf(
   formControl: AbstractControl,
   condition: Function,
   validators: ValidatorFn[]
 ) {
   formControl.setValidators((control: AbstractControl): {
     [key: string]: any;
   } => {
     const value = condition.call(this);
     if (value) {
       return Validators.compose(validators)(control);
     }
     return null;
   });
 }
開發者ID:fghaas,項目名稱:ceph,代碼行數:22,代碼來源:cd-validators.ts

示例3: addFormControl

  private addFormControl(field: FormlyFieldConfigCache) {
    const controlOptions: AbstractControlOptions = {
      validators: field._validators,
      asyncValidators: field._asyncValidators,
      updateOn: field.modelOptions.updateOn,
    };
    let control: AbstractControl;

    const form = field.parent.formControl as FormGroup;
    const value = getFieldValue(field);
    const paths = getKeyPath(field);
    if (field.formControl instanceof AbstractControl || (form && form.get(paths))) {
      control = field.formControl || form.get(paths);
      if (
        (controlOptions.validators !== control.validator)
        || (controlOptions.asyncValidators !== control.asyncValidator)
      ) {
        if (controlOptions.validators !== control.validator) {
          control.setValidators(controlOptions.validators);
        }
        if (controlOptions.asyncValidators !== control.asyncValidator) {
          control.setAsyncValidators(controlOptions.asyncValidators);
        }
        control.updateValueAndValidity();
      }
    } else if (field._componentFactory && field._componentFactory.component && field._componentFactory.component.createControl) {
      const component = field._componentFactory.component;
      console.warn(`NgxFormly: '${component.name}::createControl' is deprecated since v5.0, use 'prePopulate' hook instead.`);
      control = component.createControl(value, field);
    } else if (field.fieldGroup) {
      // TODO: move to postPopulate
      control = new FormGroup({}, controlOptions);
    } else {
      control = new FormControl(value, controlOptions);
    }

    registerControl(field, control);
  }
開發者ID:formly-js,項目名稱:ng2-formly,代碼行數:38,代碼來源:field-form.ts


注:本文中的@angular/forms.AbstractControl.setValidators方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。