UNPKG

typed-reactive-form

Version:

Allows creation of a ReactiveForm based on a class with its properties properly decorated.

25 lines 3.25 kB
import 'reflect-metadata'; import { formMemberKey } from './form-model/metadata-keys'; export function FormMember(options) { return (target, key) => { let 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) { const defaultOptions = { defaultValue: null, validators: [], }; if (options) { Object.assign(defaultOptions, options); } return defaultOptions; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tZW1iZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly90eXBlZC1yZWFjdGl2ZS1mb3JtLyIsInNvdXJjZXMiOlsibGliL2Zvcm0tbWVtYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFHMUIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBb0M7SUFDN0QsT0FBTyxDQUFDLE1BQVcsRUFBRSxHQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLFdBQVcsR0FBdUIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFakYsSUFBSSxXQUFXLEVBQUU7WUFDZixXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQztTQUNqRTthQUFNO1lBQ0wsV0FBVyxHQUFHLENBQUMsRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1lBQzlELE9BQU8sQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFHRCxTQUFTLFVBQVUsQ0FBQyxPQUFtQztJQUNyRCxNQUFNLGNBQWMsR0FBRztRQUNyQixZQUFZLEVBQUUsSUFBSTtRQUNsQixVQUFVLEVBQUUsRUFBRTtLQUNmLENBQUM7SUFDRixJQUFJLE9BQU8sRUFBQztRQUNWLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3hDO0lBQ0QsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAncmVmbGVjdC1tZXRhZGF0YSc7XG5pbXBvcnQge0Zvcm1NZW1iZXJPcHRpb25zfSBmcm9tICcuL2Zvcm0tbW9kZWwvZm9ybS1tZW1iZXItb3B0aW9ucyc7XG5pbXBvcnQge0Zvcm1NZW1iZXJEZXRhaWx9IGZyb20gJy4vZm9ybS1tb2RlbC9mb3JtLW1lbWJlci1kZXRhaWwnO1xuaW1wb3J0IHtmb3JtTWVtYmVyS2V5fSBmcm9tICcuL2Zvcm0tbW9kZWwvbWV0YWRhdGEta2V5cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBGb3JtTWVtYmVyKG9wdGlvbnM/OiBQYXJ0aWFsPEZvcm1NZW1iZXJPcHRpb25zPik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICBsZXQgZm9ybU1lbWJlcnM6IEZvcm1NZW1iZXJEZXRhaWxbXSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoZm9ybU1lbWJlcktleSwgdGFyZ2V0KTtcblxuICAgIGlmIChmb3JtTWVtYmVycykge1xuICAgICAgZm9ybU1lbWJlcnMucHVzaCh7cHJvcGVydHk6IGtleSwgb3B0aW9uczogZ2V0T3B0aW9ucyhvcHRpb25zKX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtTWVtYmVycyA9IFt7cHJvcGVydHk6IGtleSwgb3B0aW9uczogZ2V0T3B0aW9ucyhvcHRpb25zKX1dO1xuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShmb3JtTWVtYmVyS2V5LCBmb3JtTWVtYmVycywgdGFyZ2V0KTtcbiAgICB9XG4gIH07XG59XG5cblxuZnVuY3Rpb24gZ2V0T3B0aW9ucyhvcHRpb25zOiBQYXJ0aWFsPEZvcm1NZW1iZXJPcHRpb25zPik6IEZvcm1NZW1iZXJPcHRpb25zIHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIHZhbGlkYXRvcnM6IFtdLFxuICB9O1xuICBpZiAob3B0aW9ucyl7XG4gICAgT2JqZWN0LmFzc2lnbihkZWZhdWx0T3B0aW9ucywgb3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRPcHRpb25zO1xufVxuIl19