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.
27 lines • 3.27 kB
JavaScript
/**
* Given a control, returns a string representation of the property path to
* this control. Thus, for a FormControl 'firstName', that is part of a
* FormGroup named 'name', this function will return: 'name.firstName'.
*
* Note that FormArray indexes are also put in the path, e.g.: 'person.0.name.firstName'.
*/
export const getControlPath = (control) => {
const parentControl = control.parent;
if (parentControl) {
let path = getControlPath(parentControl);
if (path) {
path += '.';
}
return path + Object.keys(parentControl.controls).find(key => {
const controls = parentControl.controls;
if (Array.isArray(controls)) {
return controls[Number(key)] === control;
}
else {
return controls[key] === control;
}
});
}
return '';
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNvbnRyb2wtcGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItcmVhY3RpdmUtdmFsaWRhdGlvbi9zcmMvbGliL2dldC1jb250cm9sLXBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBd0IsRUFBVSxFQUFFO0lBQ2pFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDckMsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUksR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksSUFBSSxHQUFHLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7WUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQztZQUMzQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssT0FBTyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBHaXZlbiBhIGNvbnRyb2wsIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHByb3BlcnR5IHBhdGggdG9cbiAqIHRoaXMgY29udHJvbC4gVGh1cywgZm9yIGEgRm9ybUNvbnRyb2wgJ2ZpcnN0TmFtZScsIHRoYXQgaXMgcGFydCBvZiBhXG4gKiBGb3JtR3JvdXAgbmFtZWQgJ25hbWUnLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuOiAnbmFtZS5maXJzdE5hbWUnLlxuICpcbiAqIE5vdGUgdGhhdCBGb3JtQXJyYXkgaW5kZXhlcyBhcmUgYWxzbyBwdXQgaW4gdGhlIHBhdGgsIGUuZy46ICdwZXJzb24uMC5uYW1lLmZpcnN0TmFtZScuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDb250cm9sUGF0aCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBwYXJlbnRDb250cm9sID0gY29udHJvbC5wYXJlbnQ7XG4gIGlmIChwYXJlbnRDb250cm9sKSB7XG4gICAgbGV0IHBhdGggPSBnZXRDb250cm9sUGF0aChwYXJlbnRDb250cm9sKTtcbiAgICBpZiAocGF0aCkge1xuICAgICAgcGF0aCArPSAnLic7XG4gICAgfVxuICAgIHJldHVybiBwYXRoICsgT2JqZWN0LmtleXMocGFyZW50Q29udHJvbC5jb250cm9scykuZmluZChrZXkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbHMgPSBwYXJlbnRDb250cm9sLmNvbnRyb2xzO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udHJvbHMpKSB7XG4gICAgICAgIHJldHVybiBjb250cm9sc1tOdW1iZXIoa2V5KV0gPT09IGNvbnRyb2w7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29udHJvbHNba2V5XSA9PT0gY29udHJvbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiAnJztcbn07XG4iXX0=