@ng-flexy/form
Version:
Flexy components and tools to build Angular 8+ applications
23 lines • 3.13 kB
JavaScript
import { FormArray, FormControl, FormGroup } from '@angular/forms';
export function isRequired(control) {
if (!control) {
return null;
}
let required = false;
const formControl = new FormControl();
if (control.validator) {
const validationResult = control.validator(formControl);
required = validationResult !== null && validationResult.required === true;
}
return required;
}
export function markAsDirtyDeep(control) {
control.markAsDirty();
if (control instanceof FormGroup) {
Object.keys(control.controls).forEach(key => markAsDirtyDeep(control.controls[key]));
}
else if (control instanceof FormArray) {
control.controls.forEach(child => markAsDirtyDeep(child));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtL3NyYy9saWIvdWx0aWxzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQXdCO0lBQ2pELElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDdEMsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1FBQ3JCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxRQUFRLEdBQUcsZ0JBQWdCLEtBQUssSUFBSSxJQUFJLGdCQUFnQixDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7S0FDNUU7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUF3QjtJQUN0RCxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEIsSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN0RjtTQUFNLElBQUksT0FBTyxZQUFZLFNBQVMsRUFBRTtRQUN2QyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQzNEO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXF1aXJlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcbiAgaWYgKCFjb250cm9sKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgbGV0IHJlcXVpcmVkID0gZmFsc2U7XG4gIGNvbnN0IGZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIGlmIChjb250cm9sLnZhbGlkYXRvcikge1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBjb250cm9sLnZhbGlkYXRvcihmb3JtQ29udHJvbCk7XG4gICAgcmVxdWlyZWQgPSB2YWxpZGF0aW9uUmVzdWx0ICE9PSBudWxsICYmIHZhbGlkYXRpb25SZXN1bHQucmVxdWlyZWQgPT09IHRydWU7XG4gIH1cbiAgcmV0dXJuIHJlcXVpcmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0FzRGlydHlEZWVwKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgT2JqZWN0LmtleXMoY29udHJvbC5jb250cm9scykuZm9yRWFjaChrZXkgPT4gbWFya0FzRGlydHlEZWVwKGNvbnRyb2wuY29udHJvbHNba2V5XSkpO1xuICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICBjb250cm9sLmNvbnRyb2xzLmZvckVhY2goY2hpbGQgPT4gbWFya0FzRGlydHlEZWVwKGNoaWxkKSk7XG4gIH1cbn1cbiJdfQ==