Я использую ng-messages
для проверки полей регистрационной формы, но у меня проблема: я не могу проверить, занято ли имя пользователя, пока не отправлю запрос на регистрацию на сервер. В настоящее время у меня есть этот тип кода:
UserPool.signUp(vm.form.username, vm.form.password, attributes)
.then(function (result) {
$state.go('app.pages_auth_confirm', {
user: result.user
});
})
.catch(function () {
$scope.registerForm.username.$invalid = true;
$scope.registerForm.username.$error.usernameAlreadyExists = true;
});
и HTML:
<input name="username" ng-model="vm.form.username" placeholder="Name" required>
<div ng-messages="registerForm.username.$error" role="alert">
<div ng-message="required">
<span>Username field is required</span>
</div>
<div ng-message="usernameAlreadyExists">
<span>User with this username already exists</span>
</div>
</div>
и это работает, но я хочу знать, как правильно реализовать эту функциональность. Форма регистрации также имеет много других полей, и изменение некоторых из них вручную для отображения ошибки не кажется хорошей идеей. Я также провел некоторое исследование о проверках и сообщениях в angular и узнал о пользовательской проверке и $asyncValidators
, но я не могу использовать эту функцию ни потому, что, как я понял, мне понадобится какой-то API для получения информации только об используемых именах пользователей, но У меня такой возможности нет, как я уже сказал, я не могу проверить занято ли имя пользователя, пока не отправлю запрос на регистрацию. Так может ли кто-нибудь сказать мне, что мне делать? Как правильно работать с такой проверкой?