UNPKG

@edersondev/ngx-form-error-message

Version:

Este pacote serve para controlar as mensagens de erro do formulário reativo do angular

63 lines 7.89 kB
import { Subject } from 'rxjs'; import { FormControl } from '@angular/forms'; import { FORM_MSG_ERRORS } from './form-msg-error'; import { Directive, Inject, Input } from '@angular/core'; import { takeUntil } from 'rxjs/operators'; import * as i0 from "@angular/core"; export class NgxErrorMessageDirective { constructor(errors, _elementRef) { this.errors = errors; this._elementRef = _elementRef; this.customMessage = {}; this.destroy$ = new Subject(); this._elementRef.nativeElement.textContent = ''; } ngOnInit() { if (this.formControl instanceof FormControl) { this._elementRef.nativeElement.textContent = this.setTextError(); this.formControl.valueChanges .pipe(takeUntil(this.destroy$)) .subscribe(response => { this._elementRef.nativeElement.textContent = this.setTextError(); }); } else { throw Error(`You need to pass a FormControl.Example:\n <div [errorMessage]="form.get('input')"></div>\n`); } } ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } setTextError() { const objErrors = (this.formControl != undefined ? this.formControl.errors : null); if (objErrors != null) { const key = Object.keys(objErrors).length - 1; const firstElement = Object.keys(objErrors)[key]; const getError = this.errors[firstElement]; if (this.customMessage != undefined && this.customMessage[firstElement]) { return this.customMessage[firstElement]; } return getError(objErrors[firstElement]); } return ''; } } NgxErrorMessageDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: NgxErrorMessageDirective, deps: [{ token: FORM_MSG_ERRORS }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); NgxErrorMessageDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.6", type: NgxErrorMessageDirective, selector: "[errorMessage]", inputs: { formControl: ["errorMessage", "formControl"], customMessage: "customMessage" }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: NgxErrorMessageDirective, decorators: [{ type: Directive, args: [{ selector: '[errorMessage]' }] }], ctorParameters: function () { return [{ type: undefined, decorators: [{ type: Inject, args: [FORM_MSG_ERRORS] }] }, { type: i0.ElementRef }]; }, propDecorators: { formControl: [{ type: Input, args: ['errorMessage'] }], customMessage: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWVycm9yLW1lc3NhZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm0tZXJyb3ItbWVzc2FnZS9zcmMvbGliL25neC1lcnJvci1tZXNzYWdlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLHdCQUF3QjtJQU1uQyxZQUNtQyxNQUFVLEVBQ25DLFdBQXVCO1FBREUsV0FBTSxHQUFOLE1BQU0sQ0FBSTtRQUNuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUx4QixrQkFBYSxHQUFPLEVBQUUsQ0FBQztRQUN4QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQU0vQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBRyxJQUFJLENBQUMsV0FBVyxZQUFZLFdBQVcsRUFBQztZQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWTtpQkFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzlCLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyRSxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxNQUFNLEtBQUssQ0FBQzt1REFDcUMsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkYsSUFBRyxTQUFTLElBQUksSUFBSSxFQUFDO1lBQ25CLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUM5QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0MsSUFBRyxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFDO2dCQUNyRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDekM7WUFDRCxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztTQUMxQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7cUhBNUNVLHdCQUF3QixrQkFPekIsZUFBZTt5R0FQZCx3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQjs7MEJBUUksTUFBTTsyQkFBQyxlQUFlO3FFQUxGLFdBQVc7c0JBQWpDLEtBQUs7dUJBQUMsY0FBYztnQkFDWixhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGT1JNX01TR19FUlJPUlMgfSBmcm9tICcuL2Zvcm0tbXNnLWVycm9yJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0LCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZXJyb3JNZXNzYWdlXSdcbn0pXG5leHBvcnQgY2xhc3MgTmd4RXJyb3JNZXNzYWdlRGlyZWN0aXZlIHtcblxuICBASW5wdXQoJ2Vycm9yTWVzc2FnZScpIGZvcm1Db250cm9sOkZvcm1Db250cm9sIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBjdXN0b21NZXNzYWdlOmFueSA9IHt9O1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZPUk1fTVNHX0VSUk9SUykgcHJpdmF0ZSBlcnJvcnM6YW55LFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50ID0gJyc7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZih0aGlzLmZvcm1Db250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpe1xuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5zZXRUZXh0RXJyb3IoKTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5zZXRUZXh0RXJyb3IoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcihgWW91IG5lZWQgdG8gcGFzcyBhIEZvcm1Db250cm9sLkV4YW1wbGU6XFxuXG4gICAgICA8ZGl2IFtlcnJvck1lc3NhZ2VdPVwiZm9ybS5nZXQoJ2lucHV0JylcIj48L2Rpdj5cXG5gKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBzZXRUZXh0RXJyb3IoKTogc3RyaW5nIHtcbiAgICBjb25zdCBvYmpFcnJvcnMgPSAodGhpcy5mb3JtQ29udHJvbCAhPSB1bmRlZmluZWQgPyB0aGlzLmZvcm1Db250cm9sLmVycm9ycyA6IG51bGwpO1xuICAgIGlmKG9iakVycm9ycyAhPSBudWxsKXtcbiAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKG9iakVycm9ycykubGVuZ3RoIC0gMTtcbiAgICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IE9iamVjdC5rZXlzKG9iakVycm9ycylba2V5XTtcbiAgICAgIGNvbnN0IGdldEVycm9yID0gdGhpcy5lcnJvcnNbZmlyc3RFbGVtZW50XTtcbiAgICAgIGlmKHRoaXMuY3VzdG9tTWVzc2FnZSAhPSB1bmRlZmluZWQgJiYgdGhpcy5jdXN0b21NZXNzYWdlW2ZpcnN0RWxlbWVudF0pe1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21NZXNzYWdlW2ZpcnN0RWxlbWVudF07XG4gICAgICB9XG4gICAgICByZXR1cm4gZ2V0RXJyb3Iob2JqRXJyb3JzW2ZpcnN0RWxlbWVudF0pO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxufVxuIl19