diff --git a/docs/en/UI/Angular/Form-Validation.md b/docs/en/UI/Angular/Form-Validation.md
index dcdb79fac7..b9f3ac2602 100644
--- a/docs/en/UI/Angular/Form-Validation.md
+++ b/docs/en/UI/Angular/Form-Validation.md
@@ -4,6 +4,40 @@ Reactive forms in ABP Angular UI are validated by [ngx-validate](https://www.npm
+## How to Add New Error Messages
+
+You can add a new error message by providing the `VALIDATION_BLUEPRINTS` injection token from your root module.
+
+```js
+import { VALIDATION_BLUEPRINTS } from "@ngx-validate/core";
+
+@NgModule({
+ // rest of the module metadata
+
+ providers: [
+ // other providers
+ {
+ provide: VALIDATION_BLUEPRINTS,
+ useValue: {
+ uniqueUsername: "::AlreadyExists[{{ username }}]",
+ },
+ },
+ ],
+})
+export class AppModule {}
+```
+
+When a [validator](https://angular.io/guide/form-validation#defining-custom-validators) or an [async validator](https://angular.io/guide/form-validation#creating-asynchronous-validators) returns an error with the key given to the error blueprints (`uniqueUsername` here), the validation library will be able to display an error message after localizing according to the given key and interpolation params. The result will look like this:
+
+
+
+In this example;
+
+- Localization key is `::AlreadyExists`.
+- The interpolation param is `username`.
+- Localization resource is defined as `"AlreadyExists": "Sorry, “{0}” already exists."`.
+- And the validator should return `{ uniqueUsername: { username: "admin" } }` as the error object.
+
## What's Next?
- [Settings](./Settings.md)
diff --git a/docs/en/UI/Angular/images/form-validation---new-error-message.gif b/docs/en/UI/Angular/images/form-validation---new-error-message.gif
new file mode 100644
index 0000000000..ae61215f61
Binary files /dev/null and b/docs/en/UI/Angular/images/form-validation---new-error-message.gif differ