@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
JavaScript
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