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(function (field) {
var /** @type {?} */ formGroup = /** @type {?} */ (controls[field]);
if (formGroup.controls) {
var /** @type {?} */ groupControls = formGroup.controls;
markControlsAsTouched(groupControls);
}
else {
formGroup.markAsTouched({ onlySelf: true });
}
});
}
/**
* @param {?} formName
* @return {?}
*/
export function FvehFormIsValid(formName) {
return function (target, decoratedPropOrFunctionName, descriptor) {
var /** @type {?} */ originalMethod = descriptor.value;
descriptor.value = function () {
var /** @type {?} */ form = this[formName];
if (form.valid) {
originalMethod.apply(this, arguments);
}
else {
markControlsAsTouched(form.controls);
}
};
return descriptor;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pcy12YWxpZC5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1mdmVoLyIsInNvdXJjZXMiOlsibGliL2RlY29yYXRvcnMvZm9ybS1pcy12YWxpZC5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQSwrQkFBK0IsUUFBNEM7SUFDekUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxLQUFLO1FBQ2pDLHFCQUFNLFNBQVMscUJBQUcsUUFBUSxDQUFDLEtBQUssQ0FBYyxDQUFBLENBQUM7UUFFL0MsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3RCLHFCQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ3pDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3RDO2FBQU07WUFDTCxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDN0M7S0FDRixDQUFDLENBQUM7Q0FDSjs7Ozs7QUFFRCxNQUFNLDBCQUEwQixRQUFnQjtJQUM5QyxPQUFPLFVBQ0wsTUFBVyxFQUNYLDJCQUFtQyxFQUNuQyxVQUE4QjtRQUU5QixxQkFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUV4QyxVQUFVLENBQUMsS0FBSyxHQUFHO1lBQ2pCLHFCQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNkLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN0QztTQUNGLENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQztLQUNuQixDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmZ1bmN0aW9uIG1hcmtDb250cm9sc0FzVG91Y2hlZChjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2wgfSkge1xyXG4gIE9iamVjdC5rZXlzKGNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2xzW2ZpZWxkXSBhcyBGb3JtR3JvdXA7XHJcblxyXG4gICAgaWYgKGZvcm1Hcm91cC5jb250cm9scykge1xyXG4gICAgICBjb25zdCBncm91cENvbnRyb2xzID0gZm9ybUdyb3VwLmNvbnRyb2xzO1xyXG4gICAgICBtYXJrQ29udHJvbHNBc1RvdWNoZWQoZ3JvdXBDb250cm9scyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtR3JvdXAubWFya0FzVG91Y2hlZCh7IG9ubHlTZWxmOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gRnZlaEZvcm1Jc1ZhbGlkKGZvcm1OYW1lOiBzdHJpbmcpIHtcclxuICByZXR1cm4gZnVuY3Rpb24oXHJcbiAgICB0YXJnZXQ6IGFueSxcclxuICAgIGRlY29yYXRlZFByb3BPckZ1bmN0aW9uTmFtZTogc3RyaW5nLFxyXG4gICAgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yLFxyXG4gICkge1xyXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xyXG5cclxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgY29uc3QgZm9ybSA9IHRoaXNbZm9ybU5hbWVdO1xyXG4gICAgICBpZiAoZm9ybS52YWxpZCkge1xyXG4gICAgICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbWFya0NvbnRyb2xzQXNUb3VjaGVkKGZvcm0uY29udHJvbHMpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xyXG4gIH07XHJcbn1cclxuIl19