本文整理汇总了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 });
});
});
}
示例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;
});
}
示例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);
}