typed-reactive-form
Version:
Allows creation of a ReactiveForm based on a class with its properties properly decorated.
25 lines • 3.24 kB
JavaScript
import 'reflect-metadata';
import { formMemberKey } from './form-model/metadata-keys';
export function FormMember(options) {
return function (target, key) {
var formMembers = Reflect.getMetadata(formMemberKey, target);
if (formMembers) {
formMembers.push({ property: key, options: getOptions(options) });
}
else {
formMembers = [{ property: key, options: getOptions(options) }];
Reflect.defineMetadata(formMemberKey, formMembers, target);
}
};
}
function getOptions(options) {
var defaultOptions = {
defaultValue: null,
validators: [],
};
if (options) {
Object.assign(defaultOptions, options);
}
return defaultOptions;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tZW1iZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly90eXBlZC1yZWFjdGl2ZS1mb3JtLyIsInNvdXJjZXMiOlsibGliL2Zvcm0tbWVtYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFHMUIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBb0M7SUFDN0QsT0FBTyxVQUFDLE1BQVcsRUFBRSxHQUFXO1FBQzlCLElBQUksV0FBVyxHQUF1QixPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVqRixJQUFJLFdBQVcsRUFBRTtZQUNmLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1NBQ2pFO2FBQU07WUFDTCxXQUFXLEdBQUcsQ0FBQyxFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUM7WUFDOUQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUdELFNBQVMsVUFBVSxDQUFDLE9BQW1DO0lBQ3JELElBQU0sY0FBYyxHQUFHO1FBQ3JCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLFVBQVUsRUFBRSxFQUFFO0tBQ2YsQ0FBQztJQUNGLElBQUksT0FBTyxFQUFDO1FBQ1YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDeEM7SUFDRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7Rm9ybU1lbWJlck9wdGlvbnN9IGZyb20gJy4vZm9ybS1tb2RlbC9mb3JtLW1lbWJlci1vcHRpb25zJztcbmltcG9ydCB7Rm9ybU1lbWJlckRldGFpbH0gZnJvbSAnLi9mb3JtLW1vZGVsL2Zvcm0tbWVtYmVyLWRldGFpbCc7XG5pbXBvcnQge2Zvcm1NZW1iZXJLZXl9IGZyb20gJy4vZm9ybS1tb2RlbC9tZXRhZGF0YS1rZXlzJztcblxuZXhwb3J0IGZ1bmN0aW9uIEZvcm1NZW1iZXIob3B0aW9ucz86IFBhcnRpYWw8Rm9ybU1lbWJlck9wdGlvbnM+KTogUHJvcGVydHlEZWNvcmF0b3Ige1xuICByZXR1cm4gKHRhcmdldDogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgIGxldCBmb3JtTWVtYmVyczogRm9ybU1lbWJlckRldGFpbFtdID0gUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtTWVtYmVyS2V5LCB0YXJnZXQpO1xuXG4gICAgaWYgKGZvcm1NZW1iZXJzKSB7XG4gICAgICBmb3JtTWVtYmVycy5wdXNoKHtwcm9wZXJ0eToga2V5LCBvcHRpb25zOiBnZXRPcHRpb25zKG9wdGlvbnMpfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1NZW1iZXJzID0gW3twcm9wZXJ0eToga2V5LCBvcHRpb25zOiBnZXRPcHRpb25zKG9wdGlvbnMpfV07XG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKGZvcm1NZW1iZXJLZXksIGZvcm1NZW1iZXJzLCB0YXJnZXQpO1xuICAgIH1cbiAgfTtcbn1cblxuXG5mdW5jdGlvbiBnZXRPcHRpb25zKG9wdGlvbnM6IFBhcnRpYWw8Rm9ybU1lbWJlck9wdGlvbnM+KTogRm9ybU1lbWJlck9wdGlvbnMge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgdmFsaWRhdG9yczogW10sXG4gIH07XG4gIGlmIChvcHRpb25zKXtcbiAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdE9wdGlvbnM7XG59XG4iXX0=