ng-fveh
Version:
NG-FVEH - Some helpers to help you with form validation :)
41 lines (40 loc) • 3.75 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
/**
* @param {?} controls
* @return {?}
*/
function markControlsAsTouched(controls) {
Object.keys(controls).forEach(field => {
const /** @type {?} */ formGroup = /** @type {?} */ (controls[field]);
if (formGroup.controls) {
const /** @type {?} */ groupControls = formGroup.controls;
markControlsAsTouched(groupControls);
}
else {
formGroup.markAsTouched({ onlySelf: true });
}
});
}
/**
* @param {?} formName
* @return {?}
*/
export function FvehFormIsValid(formName) {
return function (target, decoratedPropOrFunctionName, descriptor) {
const /** @type {?} */ originalMethod = descriptor.value;
descriptor.value = function () {
const /** @type {?} */ form = this[formName];
if (form.valid) {
originalMethod.apply(this, arguments);
}
else {
markControlsAsTouched(form.controls);
}
};
return descriptor;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pcy12YWxpZC5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1mdmVoLyIsInNvdXJjZXMiOlsibGliL2RlY29yYXRvcnMvZm9ybS1pcy12YWxpZC5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQSwrQkFBK0IsUUFBNEM7SUFDekUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEMsdUJBQU0sU0FBUyxxQkFBRyxRQUFRLENBQUMsS0FBSyxDQUFjLENBQUEsQ0FBQztRQUUvQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDdEIsdUJBQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDekMscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNMLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM3QztLQUNGLENBQUMsQ0FBQztDQUNKOzs7OztBQUVELE1BQU0sMEJBQTBCLFFBQWdCO0lBQzlDLE9BQU8sVUFDTCxNQUFXLEVBQ1gsMkJBQW1DLEVBQ25DLFVBQThCO1FBRTlCLHVCQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRXhDLFVBQVUsQ0FBQyxLQUFLLEdBQUc7WUFDakIsdUJBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3RDO1NBQ0YsQ0FBQztRQUVGLE9BQU8sVUFBVSxDQUFDO0tBQ25CLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZnVuY3Rpb24gbWFya0NvbnRyb2xzQXNUb3VjaGVkKGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbCB9KSB7XHJcbiAgT2JqZWN0LmtleXMoY29udHJvbHMpLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gY29udHJvbHNbZmllbGRdIGFzIEZvcm1Hcm91cDtcclxuXHJcbiAgICBpZiAoZm9ybUdyb3VwLmNvbnRyb2xzKSB7XHJcbiAgICAgIGNvbnN0IGdyb3VwQ29udHJvbHMgPSBmb3JtR3JvdXAuY29udHJvbHM7XHJcbiAgICAgIG1hcmtDb250cm9sc0FzVG91Y2hlZChncm91cENvbnRyb2xzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvcm1Hcm91cC5tYXJrQXNUb3VjaGVkKHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBGdmVoRm9ybUlzVmFsaWQoZm9ybU5hbWU6IHN0cmluZykge1xyXG4gIHJldHVybiBmdW5jdGlvbihcclxuICAgIHRhcmdldDogYW55LFxyXG4gICAgZGVjb3JhdGVkUHJvcE9yRnVuY3Rpb25OYW1lOiBzdHJpbmcsXHJcbiAgICBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IsXHJcbiAgKSB7XHJcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XHJcblxyXG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICBjb25zdCBmb3JtID0gdGhpc1tmb3JtTmFtZV07XHJcbiAgICAgIGlmIChmb3JtLnZhbGlkKSB7XHJcbiAgICAgICAgb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtYXJrQ29udHJvbHNBc1RvdWNoZWQoZm9ybS5jb250cm9scyk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGRlc2NyaXB0b3I7XHJcbiAgfTtcclxufVxyXG4iXX0=