Angular: применение валидаторов к другим элементам, кроме FormControls - PullRequest
2 голосов
/ 08 октября 2019

Наше приложение использует данные сервера и отображает их в реактивных формах в различных частях приложения (не одновременно).

Мы должны иметь возможность проверять данные не только в этих различных формах,но также и на более высоком уровне, где мы можем сказать, что все данные действительны независимо от того, находится ли пользователь в форме или нет.

Мы хотели бы иметь возможность использовать одну и ту же логику для проверки форм и сервера. Данные не повторяются.

Мы попытались передать данные во встроенные валидаторы, но эти валидаторы принимают только FormControls. Скорее всего, мы могли бы использовать пользовательские валидаторы и заставить эти функции принимать «любые» ... но это не кажется правильным.

Какой предпочтительный / правильный способ в Angular применять валидаторы к данным, а не FormControl(если вообще возможно)?

1 Ответ

1 голос
/ 09 октября 2019

Вы всегда можете создать FormGroup, помните, FormGroup существует независимо, у вас есть вход или нет - я думаю, что это немного "с помощью кувалды, чтобы сломать орех" - но в любом случае, я привел пример

 data = { email: "qqq@qqq.com", name: "" };

 checkData(data:any){
    const fool = new FormGroup({
      email: new FormControl("", [Validators.required, Validators.email]),
      name: new FormControl("", [Validators.required])
    });
    fool.setValue(data);
    return (fool.valid)
  }

Но валидатор - это только функция, которая возвращает ноль, если нет ошибок, и объект, если есть ошибка. Вы можете сделать функцию, подобную «валидатору», получить в качестве аргумента только any, а не abstractControl-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...