Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 1x 73x 73x 73x 12x 1x 11x 11x 5x 6x 6x 6x 4x 4x 2x 2x 1x 1x 5x 73x 73x 73x 73x 61x 12x 12x 13x 12x 14x 13x | import { Inject, Injectable, Optional } from '@angular/core'; import { DynamicFormLibraryService } from '../dynamic-form-library/dynamic-form-library.service'; import { DynamicFormValidationConfig, DynamicFormValidationConfigs, DYNAMIC_FORM_VALIDATION_CONFIGS } from './dynamic-form-validation-config'; import { DynamicFormValidationErrors } from './dynamic-form-validation-errors'; @Injectable() export class DynamicFormValidationService { readonly validationConfig: DynamicFormValidationConfig; constructor( protected libraryService: DynamicFormLibraryService, @Optional() @Inject(DYNAMIC_FORM_VALIDATION_CONFIGS) private validationConfigs: DynamicFormValidationConfigs, ) { this.validationConfig = this.mergeValidationConfigs(this.validationConfigs); } getErrorMessage(errors: DynamicFormValidationErrors): string { if (!errors) { return null; } const keys = Object.keys(errors); if (!keys.length) { return this.getDefaultErrorMessage(); } const errorKey = keys[0]; const error = errors[errorKey]; return error && error.message ? error.message : this.getErrorMessageFromConfig(errorKey, error); } private getErrorMessageFromConfig(errorKey: string, error: any): string { const message = this.validationConfig.messages[errorKey]; if (typeof message === 'string') { return message; } if (typeof message === 'function') { return message(error); } return this.validationConfig.defaultMessage; } private getDefaultErrorMessage(): string { return this.validationConfig.defaultMessage; } private mergeValidationConfigs(configs: DynamicFormValidationConfigs): DynamicFormValidationConfig { const library = this.libraryService.library; const libraryName = library.name; const defaultConfig = { defaultMessage: undefined, messages: {}, libraryName }; if (!configs || !configs.length) { return defaultConfig; } const libraryConfigs = this.getLibraryConfigs(configs); return libraryConfigs.reduce((result, config) => { return { ...result, ...config, messages: { ...result.messages, ...config.messages }, libraryName, }; }, defaultConfig); } private getLibraryConfigs(configs: DynamicFormValidationConfigs): DynamicFormValidationConfigs { return this.libraryService.libraryNamesReverse .map(name => configs.find(config => config.libraryName === name)) .filter(config => !!config); } } |