It makes a form field required or optional based on a dynamically evaluated condition
import { Validators } from '@angular/forms'; export function requiredIfValidator(predicate: () => boolean) { return formControl => { if (!formControl.parent) { return null; } if (predicate()) { return Validators.required(formControl); } return null; }; }