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.

27 lines 3.27 kB
/** * 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=