validate(control: AbstractControl): ValidationErrors | null { if (control.value === null) { return { required: true }; } return null; }
@Component({ selector: 'app-custom-control', templateUrl: './custom-control.component.html', changeDetection: ChangeDetectionStrategy.OnPush }) export class CustomControlComponent implements ControlValueAccessor { // ControlValueAccessor Interface Methods…
constructor(private cdRef: ChangeDetectorRef) {}
onChange(val) {}
onTouched() {}
writeValue(val: any) {}
registerOnChange(fn: any) {}
registerOnTouched(fn: any) {}
setDisabledState(isDisabled: boolean) {}
validate(control: AbstractControl): ValidationErrors | null {
if (control.value === null) {
this.cdRef.markAsTouched();
this.cdRef.markAsDirty();
return { required: true };
}
return null;
}
}