Валідатори - механізм, що забезпечує перевірку достовірності моделі. Зверніть увагу, что валідатори, як і все решта в шаблонах, пов'язуються з даними, а не з користувацьким інтерфейсом. Елементи керування самі відслідковують коректність даних і виводять відповідні повідомлення про помилки.
Об'єкт, що описує валідатори, являє собою звичайний об`єкт JavaScript. Імена властивостей являють
собою шлях до елементу даних в моделі (до того об'єкту, перевірку якого потрібно виконати). Якщо в шляху до
даних зустрічається масив, то відповідна властивість відмічається суфіксом []. Наприклад,
валідатор до властивості Sum рядку документу буде мати ім'я Document.Rows[].Sum.
Значенням валідатора може бути як один валідатор, так і масив валідаторів. Якщо це масив, то застосовуються всі валідатори з масива.
Кожен валідатор (єдиний, або елемент масива) може бути рядком, функцією, або об'єктом заданної структури. Основним видом валідатора є об'єкт. Решта значень - просто скороченй запис для об'єкта.
valid - рядок (стандартний валідатор) або функція перевірки.async - необов'язково. Валідатор є асинхронним (див. нижче).
msg - повідомлення про помилку. Функція перевірки може повернути рядок, а не булеве значення. У цьому випадку значення
цієї властивості ігнорується.
severity - серйозність помилки. За замовчуванням - 'error'. Впливає на зовнішній вигляд повідомлення і
може бути використано в коді.
regExp - регулярний вираз для стандартного валідатора типу 'regExp'.
applyIf - функція, що визначає, чи потрібно застосовувати валідатор.
Якщо значення властивості valid - рядок, то це стандартний валідатор. Можливі значення:
'notBlank' - значення не пусте.'email' - значення являє собою коректну (синтаксично) адресу електронної пошти.
'url' - значення являє собою коректну (синтаксично) web-адресу.
'isTrue' - значення точно дорівнює true.
'regExp' - значення відповідає регулярному виразу. У цьому випадку повинно бути задано властивість 'regExp'.
Якщо валідатор - рядок, то це перевірка значення на пустоту. Сам рядок буде повідомленням про помилку. Це еквівалент об'єкта
Якщо валідатор - функція, то це еквівалент об'єкта
valid(elem: IElement, value?: any): boolean | string | Promise;
elem - елемент, до якого застосовується валідатор.
val - значення, що перевіряється.
true - якщо значення коректне. false - якщо значення некоректне. string - повідомлення про помилку, якщо значення некоректне. Цей рядок буде заміщувати значення властивості 'msg'.
Якщо валідатор декларовано як функцію, то ця функція завжди повинна повертати рядок (значення msg в цьому випадку просто нема).
об`єкт templateValidatorResult - об'єкт, що визначає повідомлення про помилку (msg)
і ступінь її серйозності (severity).
Promise - для асинхронного валідатора. Проміс повинен повернути булеве значення або рядок.applyIfapplyIf?: (elem: IElement, value?: any): boolean
elem - елемент, до якого застосовується валідатор.
val - значення, що перевіряється.
true - якщо валідатор активний і його потрібно застосувати.
Асинхронні валідатори використовуються у випадку, коли для перевірки коректності потрібно звернутися до серверу. Такий валідатор
відмічається властивістю async: true.
Функція валідації для асинхронного валідатора повинна повернути Promise, значенням якого буде або булеве значення,
або рядок (як і у звичайної функції валідації).
Асинхронний валідатор зазвичай використовує метод контролера $asyncValid.
Зверніть увагу! Значення, що повертаються, для асинхронних валідаторів, кешуються для уникнення занадто частих звернень до серверу. Фактично валідатор викликається тільки одного разу при кожній зміні пов'язаних з ними значень.