FluentValidation.ts несколько валидаторов и сообщений - PullRequest
0 голосов
/ 15 января 2020

При проверке дочернего элемента parent не отображаются дочерние сообщения, только родительские.

Как просмотреть все сообщения для проверки дочерних и родительских элементов?

interface IItem {
    id: number;
    subItem: ISubItem;
    customSubItem: ICustomSubItem;
}
interface ISubItem {
    someNumber: number;
}
interface ICustomSubItem {
    someNumber: number;
}

class CustomSubItemValidator extends Validator<ICustomSubItem> {
    constructor() {
        super();

        this.ruleFor('someNumber')
            .greaterThan(2)
            .withMessage('Please enter a number');
    }
}
class SubItemValidator extends Validator<ISubItem> {
    constructor() {
        super();

        this.ruleFor('someNumber')
            .greaterThan(2)
            .withMessage('Please enter a number');
    }
}
class ItemValidator extends Validator<IItem> {
    constructor() {
        super();

        this.ruleFor('id')
            .greaterThan(0)
            .withMessage('Please enter your an id');

        this.ruleFor('subItem')
          .setValidator(() => new SubItemValidator());

        this.ruleFor('customSubItem')
          .setValidator(() => new CustomSubItemValidator());

        this.ruleFor('subItem')
            .must((subItem, item) => {
              return subItem.someNumber > item.customSubItem.someNumber
            })
            .withMessage('Sub item number should be greater then custom sub item');
    }
}
const itemValidator = new ItemValidator();
console.log(itemValidator.validate({
  id: 1, 
  subItem: { someNumber: 1 }, 
  customSubItem: { someNumber: 2 }
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...