3.2.0 • Published 6 months ago

ngx-form-messages v3.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

Angular components for validation messages, like ngMessages. Contains default messages for common errors which can be overriden or extended through config or content projection. By default show errors when form is submitted or control is touched, can be changed through Input.

Install

  1. install by running npm i ngx-form-messages
  2. Add NgxFormMessagesComponent to your imports

Basic usage

Just give it control, that's all.

<form [formGroup]="form">
  <input formControlName="controlName" />
    <ngx-form-messages [control]="form.controls.controlName">
    </ngx-form-messages>
</form>

Api

ngx-form-messages

NameTypeDescription
singlebooleanShow only first error. Default false
controlAbstractFormControlThis field is required.
when"touched" | "dirty" | "always"State of form control when to show error message

ngx-form-message

NameTypeDescription
errorstringName of an error in abstract form control.

Config

NgxFormMessages has some predefined messages

  • required: Field is required
  • email: Invalid email address
  • pattern: Field is invalid
  • min: Field must be no less than ${min}
  • max: Field must be no greater than ${max}
  • minlength: Field must be longer than ${requiredLength} characters
  • maxlength: Field must be no longer than ${requiredLength} characters

You can override existing messages or add custom messages if provide factory function for custom config through InjectionToken.

import { NGX_FORM_MESSAGE_CONFIG, NgxFormMessageConfig } from 'ngx-form-messages';

providers: [{
  provide: NGX_FORM_MESSAGE_CONFIG,
  useValue: (): NgxFormMessageConfig => {
    return {
      custom: () => "Custom error message"
      email: () => "Overridden email message",
    };
  },
}],

Factory function signature is: export type NgxFormMessageConfigFactory = () => NgxFormMessageConfig | Promise<NgxFormMessageConfig> | Observable<NgxFormMessageConfig>; So it can return simple object, promise or observable. In case of promise or observable you can change messages in time, lib handles changes reactively.

Signature of config:

export type NgxFormMessageConfig = {
  readonly email?: (payload: boolean) => string;
  readonly max?: (payload: { actual: string | number, max: number }) => string;
  readonly maxlength?: (payload: { actualLength: number, requiredLength: number }) => string;
  readonly min?: (payload: { actual: string | number, min: number }) => string;
  readonly minlength?: (payload: { actualLength: number, requiredLength: number }) => string;
  readonly required?: (payload: boolean) => string;
  readonly pattern?: (payload: boolean) => string;
  readonly [key: string]: any;
}

Projected messages

You can add new messages or override existing ones with content projection and NgxFormMessageComponent

<form [formGroup]="form">
  <input formControlName="controlName" />
  <ngx-form-messages [control]="form.controls.controlName">
    <ngx-form-message error="custom">This is a custom error</ngx-form-message>
    <ngx-form-message error="required">Override required error</ngx-form-message>
  </ngx-form-messages>
</form>
3.2.0

6 months ago

3.1.0

11 months ago

2.0.3

1 year ago

3.0.0

1 year ago

2.0.2

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago