UNPKG

angular-reactive-validation

Version:

Reactive Forms validation shouldn't require the developer to write lots of HTML to show validation messages. This library makes it easy.

24 lines 5.23 kB
import { UntypedFormControl } from '@angular/forms'; export const getFormControlFromContainer = (name, controlContainer) => { if (controlContainer) { const control = controlContainer.control.controls[name]; if (!control) { throw new Error(`There is no control named '${name}'` + (getPath(controlContainer).length > 0 ? ` within '${getPath(controlContainer).join('.')}'` : '') + '.'); } if (!(control instanceof UntypedFormControl)) { throw new Error(`The control named '${name}' ` + (getPath(controlContainer).length > 0 ? `within '${getPath(controlContainer).join('.')}' ` : '') + `is not a FormControl. Maybe you accidentally referenced a FormGroup or FormArray?`); } return control; } else { throw new Error(`You can't pass a string to arv-validation-messages's for attribute, when the ` + `arv-validation-messages element is not a child of an element with a formGroupName or formGroup declaration.`); } }; export const isControlContainerVoidOrInitialized = (controlContainer) => !!(!controlContainer || controlContainer.form || (controlContainer.formDirective && controlContainer.formDirective.form)); const getPath = (controlContainer) => controlContainer.path || []; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWZvcm0tY29udHJvbC1mcm9tLWNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItcmVhY3RpdmUtdmFsaWRhdGlvbi9zcmMvbGliL2dldC1mb3JtLWNvbnRyb2wtZnJvbS1jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixrQkFBa0IsRUFBd0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLElBQVksRUFBRSxnQkFBOEMsRUFBc0IsRUFBRTtJQUM5SCxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDckIsTUFBTSxPQUFPLEdBQUksZ0JBQWdCLENBQUMsT0FBNEIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsSUFBSSxHQUFHO2dCQUNuRCxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzVHLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxPQUFPLFlBQVksa0JBQWtCLENBQUMsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLElBQUksSUFBSTtnQkFDNUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hHLG1GQUFtRixDQUFDLENBQUM7UUFDekYsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQywrRUFBK0U7WUFDN0YsNkdBQTZHLENBQUMsQ0FBQztJQUNuSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsQ0FBQyxnQkFBOEMsRUFBRSxFQUFFLENBQ3RHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLElBQUssZ0JBQXVDLENBQUMsSUFBSTtJQUNqRSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsSUFBSyxnQkFBZ0IsQ0FBQyxhQUFvQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFFckcsTUFBTSxPQUFPLEdBQUcsQ0FBQyxnQkFBa0MsRUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQ29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybUNvbnRyb2xGcm9tQ29udGFpbmVyID0gKG5hbWU6IHN0cmluZywgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciB8IHVuZGVmaW5lZCk6IFVudHlwZWRGb3JtQ29udHJvbCA9PiB7XG4gIGlmIChjb250cm9sQ29udGFpbmVyKSB7XG4gICAgY29uc3QgY29udHJvbCA9IChjb250cm9sQ29udGFpbmVyLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Hcm91cCkuY29udHJvbHNbbmFtZV07XG4gICAgaWYgKCFjb250cm9sKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIG5vIGNvbnRyb2wgbmFtZWQgJyR7bmFtZX0nYCArXG4gICAgICAgIChnZXRQYXRoKGNvbnRyb2xDb250YWluZXIpLmxlbmd0aCA+IDAgPyBgIHdpdGhpbiAnJHtnZXRQYXRoKGNvbnRyb2xDb250YWluZXIpLmpvaW4oJy4nKX0nYCA6ICcnKSArICcuJyk7XG4gICAgfVxuICAgIGlmICghKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBjb250cm9sIG5hbWVkICcke25hbWV9JyBgICtcbiAgICAgICAgKGdldFBhdGgoY29udHJvbENvbnRhaW5lcikubGVuZ3RoID4gMCA/IGB3aXRoaW4gJyR7Z2V0UGF0aChjb250cm9sQ29udGFpbmVyKS5qb2luKCcuJyl9JyBgIDogJycpICtcbiAgICAgICAgYGlzIG5vdCBhIEZvcm1Db250cm9sLiBNYXliZSB5b3UgYWNjaWRlbnRhbGx5IHJlZmVyZW5jZWQgYSBGb3JtR3JvdXAgb3IgRm9ybUFycmF5P2ApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250cm9sO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgWW91IGNhbid0IHBhc3MgYSBzdHJpbmcgdG8gYXJ2LXZhbGlkYXRpb24tbWVzc2FnZXMncyBmb3IgYXR0cmlidXRlLCB3aGVuIHRoZSBgICtcbiAgICAgIGBhcnYtdmFsaWRhdGlvbi1tZXNzYWdlcyBlbGVtZW50IGlzIG5vdCBhIGNoaWxkIG9mIGFuIGVsZW1lbnQgd2l0aCBhIGZvcm1Hcm91cE5hbWUgb3IgZm9ybUdyb3VwIGRlY2xhcmF0aW9uLmApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNDb250cm9sQ29udGFpbmVyVm9pZE9ySW5pdGlhbGl6ZWQgPSAoY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciB8IHVuZGVmaW5lZCkgPT5cbiEhKCFjb250cm9sQ29udGFpbmVyIHx8IChjb250cm9sQ29udGFpbmVyIGFzIEZvcm1Hcm91cERpcmVjdGl2ZSkuZm9ybSB8fFxuICAgIChjb250cm9sQ29udGFpbmVyLmZvcm1EaXJlY3RpdmUgJiYgKGNvbnRyb2xDb250YWluZXIuZm9ybURpcmVjdGl2ZSBhcyBGb3JtR3JvdXBEaXJlY3RpdmUpLmZvcm0pKTtcblxuY29uc3QgZ2V0UGF0aCA9IChjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyKTogc3RyaW5nW10gPT4gY29udHJvbENvbnRhaW5lci5wYXRoIHx8IFtdO1xuIl19