Статьи

Внедрение службы в асинхронный валидатор в Angular

Всякий раз, когда мы используем настраиваемый асинхронный валидатор, в основном мы хотим отправить HTTP-запрос на сервер и проверить ввод на основе ответа. если мы перейдем к Angular Documentation, там нет информации о том, как внедрить сервис в асинхронный валидатор.

Один из возможных способов внедрить что-то в нашу функцию-валидатор — обернуть эту функцию функцией-создателем и передать параметры самостоятельно.

Итак, если у меня есть следующий валидатор:

Я мог бы обернуть его функцией создателя и передать от него параметры:

Затем я мог бы использовать его где-нибудь в своем приложении, например:

new FormControl("", null, [ usernameValidator(['admin','manager']) ]);

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

У этого решения есть некоторые недостатки

  • Это не слабо связано
  • Мы должны повторять один и тот же код каждый раз, когда используем этот валидатор.
Читать:
Аутентификация Api тестового полета Amadeus с помощью Javascript Fetch

Вот почему есть предпочтительный способ сделать это.

Использование службы для создания валидатора

Помните, что асинхронный валидатор — это просто функция javascript, и ничего больше. Таким образом, мы можем объявить это где угодно, даже в нашем сервисе.

Итак, если мы создадим какую-то async.service службу и объявим там наш асинхронный валидатор, мы сможем внедрить HttpClient в эту службу и использовать его внутри асинхронного валидатора (он будет содержать ссылку на async.service)

Теперь все, что нам нужно сделать, это внедрить эту службу в компонент и использовать ее соответствующим образом.

new FormControl("", null, [ asyncService.usernameValidator() ]);

Похожие записи

Диагностика GCC — это здорово, но этого недостаточно

admin

Из многих маршрутов вы можете продолжить изучение науки о данных и машинного обучения (аспирантура, MOOC, учебные лагеря, самообучение и т. Д.), Которые…

admin

Проблемы с обновлением Angular CLI: обновите проект Angular вручную

admin

Как подготовить компанию и сотрудников к внедрению нейросетей в 2026 году

admin

Различия между статическими и динамическими библиотеками

admin

Как подключить Blockstack к вашему Backend API

admin