1.1.3 • Published 3 years ago

ngx-form-error v1.1.3

Weekly downloads
116
License
MIT
Repository
github
Last release
3 years ago

Angular Form Error

Build Status

An Angular library to display form error messages effortless and consistently.

Features:

  • consistent error messages
  • small markup
  • change messages to your liking
  • variable messages: include specifics from validator (e.g. min lenght)

Install

npm install ngx-form-error

Setup

Import library in your root module

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ReactiveFormsModule } from '@angular/forms';
import { NgxFormErrorModule } from 'ngx-form-error';

import { AppComponent }  from './app.component';

@NgModule({
  imports:      [
    BrowserModule,
    ReactiveFormsModule,
    NgxFormErrorModule   // <- import
  ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ],
})
export class AppModule { }

Use

Add the ngx-form-error directive where you want so have the errors displayed and set the control

<form [formGroup]="exampleForm" novalidate (ngSubmit)="formSubmit()">
  <div class="form-input">
    <label for="required-input">Required input</label>
    <input formControlName="req" type="text" id="required-input">
    <ngx-form-error [control]="exampleForm.get('req')"></ngx-form-error>
  </div>
</form>

or in model driven forms:

<form novalidate (ngSubmit)="formSubmit()">
  <div class="form-input">
    <label for="model-required-input" class="required">Required input</label>
    <input type="text" id="model-required-input" name="model-required"
            [(ngModel)]="model.reqiredField" #reqiredModel="ngModel"
            required>
    <ngx-form-error [control]="reqiredModel.control"></ngx-form-error>
  </div>
</form>

To add messages for custom validations or change/translate build in messages, use the NgxFormErrorConfig service:

import { Component } from '@angular/core';
import { NgxFormErrorConfig } from 'ngx-form-error';

@Component({
  selector: 'app-form',
  template: `...`
})
export class AppFormComponent {
  constructor(errorFormConfig: NgxFormErrorConfig) {
    errorFormConfig.updateMessages({
      required: 'Custom required message',
      minlength: (context) => `Custom message with context: required minimum is ${context.requiredLength} characters.`,
    });
  }
}

Set your own template per instance:

<form [formGroup]="exampleForm" novalidate (ngSubmit)="formSubmit()">
  <div class="form-input">
    <label for="required-input">Required input</label>
    <input formControlName="req" type="text" id="required-input">
    <ngx-form-error [control]="exampleForm.get('req')" [template]="custom"></ngx-form-error>
  </div>
</form>

<ng-template #custom let-errors="errors">
  <div *ngFor="let error of errors" class="error-message">
    custom error template: {{error.message}}
  </div>
</ng-template>

or set it globaly via errorFormConfig.setTemplate(tpl) e.g. in your root component:

import { Component, TemplateRef, ViewChild } from '@angular/core';
import { NgxFormErrorConfig } from 'ngx-form-error';
import { ErrorTemplateContext } from 'ngx-form-error/lib/template/error-template.context';

@Component({
  selector: 'app-root',
  template: `
    <router-outlet></router-outlet>

    <ng-template #defFrmErrorTpl let-errors="errors">
      <div *ngFor="let error of errors" class="error-message">go nuts: {{error.message}}</div>
    </ng-template>
  `
})
export class AppComponent implements OnInit{
  @ViewChild('defFrmErrorTpl', {static: false}) frmErrorTpl: TemplateRef<ErrorTemplateContext>;

  constructor(private errorFormConfig: NgxFormErrorConfig) {
  }

  ngAfterViewInit(): void {
    this.errorFormConfig.setTemplate(this.frmErrorTpl);
  }
}```
1.1.3

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.1.2

3 years ago

1.0.1

5 years ago

0.0.1

5 years ago

1.0.0

5 years ago

1.0.0-0

5 years ago

0.3.0

6 years ago

0.2.0

7 years ago

0.1.0

7 years ago