UNPKG

svogv

Version:

A decorator based approach for model driven forms, including an advanced DataGrid and a TreeView component.

31 lines 3.53 kB
/** * A custom validator to compare two fields. This is internally to support the infrastructure * and not intended to being used by custom code. * * @param p The field's name * */ export function validateCompare(p) { let changeEventWasAdded = false; return function (c) { const form = c.root; if (form && form.controls && !changeEventWasAdded) { form.controls[p].valueChanges.subscribe(() => { // trigger validation for particular element c.updateValueAndValidity(); }); changeEventWasAdded = true; } if (c.value) { // compare the current value with the referenced control's value return !c.value || c.value === c.root['controls'][p].value ? null : { compare: { valid: false } }; } }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyZS52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvc3ZvZ3Yvc3JjLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3ZhbGlkYXRvcnMvY29tcGFyZS52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxDQUFTO0lBQ3ZDLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE9BQU8sVUFBUyxDQUFjO1FBQzVCLE1BQU0sSUFBSSxHQUFjLENBQUMsQ0FBQyxJQUFpQixDQUFDO1FBQzVDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUMzQyw0Q0FBNEM7Z0JBQzVDLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ1gsZ0VBQWdFO1lBQ2hFLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQVcsQ0FBQyxDQUFDLElBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO2dCQUMvRCxDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUM7b0JBQ0UsT0FBTyxFQUFFO3dCQUNQLEtBQUssRUFBRSxLQUFLO3FCQUNiO2lCQUNGLENBQUM7U0FDUDtJQUNILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqXHJcbiAqIEEgY3VzdG9tIHZhbGlkYXRvciB0byBjb21wYXJlIHR3byBmaWVsZHMuIFRoaXMgaXMgaW50ZXJuYWxseSB0byBzdXBwb3J0IHRoZSBpbmZyYXN0cnVjdHVyZVxyXG4gKiBhbmQgbm90IGludGVuZGVkIHRvIGJlaW5nIHVzZWQgYnkgY3VzdG9tIGNvZGUuXHJcbiAqXHJcbiAqIEBwYXJhbSBwIFRoZSBmaWVsZCdzIG5hbWVcclxuICpcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvbXBhcmUocDogc3RyaW5nKSB7XHJcbiAgbGV0IGNoYW5nZUV2ZW50V2FzQWRkZWQgPSBmYWxzZTtcclxuICByZXR1cm4gZnVuY3Rpb24oYzogRm9ybUNvbnRyb2wpIHtcclxuICAgIGNvbnN0IGZvcm06IEZvcm1Hcm91cCA9IGMucm9vdCBhcyBGb3JtR3JvdXA7XHJcbiAgICBpZiAoZm9ybSAmJiBmb3JtLmNvbnRyb2xzICYmICFjaGFuZ2VFdmVudFdhc0FkZGVkKSB7XHJcbiAgICAgIGZvcm0uY29udHJvbHNbcF0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdHJpZ2dlciB2YWxpZGF0aW9uIGZvciBwYXJ0aWN1bGFyIGVsZW1lbnRcclxuICAgICAgICBjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNoYW5nZUV2ZW50V2FzQWRkZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGMudmFsdWUpIHtcclxuICAgICAgLy8gY29tcGFyZSB0aGUgY3VycmVudCB2YWx1ZSB3aXRoIHRoZSByZWZlcmVuY2VkIGNvbnRyb2wncyB2YWx1ZVxyXG4gICAgICByZXR1cm4gIWMudmFsdWUgfHwgYy52YWx1ZSA9PT0gKDxhbnk+Yy5yb290KVsnY29udHJvbHMnXVtwXS52YWx1ZVxyXG4gICAgICAgID8gbnVsbFxyXG4gICAgICAgIDoge1xyXG4gICAgICAgICAgICBjb21wYXJlOiB7XHJcbiAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICB9XHJcbiAgfTtcclxufVxyXG4iXX0=