У меня есть форма с некоторыми входными данными, которые находятся в md-input-container. Каждый вход имеет некоторое сообщение проверки с директивой ng-messages:
<form name="ctrl.myForm" layout="column" ng-submit="addUser(model)">
<input hide type="submit" />
<div layout="column" layout-padding>
<md-input-container>
<label translate>Username</label>
<input name="username" ng-model="model.username" type="text" required>
<div ng-messages="ctrl.myForm.username.$error">
<div ng-message="required" translate>This field is required.</div>
<div ng-message="unique" translate>Username is used before.</div>
</div>
</md-input-container>
<md-input-container>
<label translate>Email</label>
<input name="email" ng-model="model.email" required>
<div ng-messages="ctrl.myForm.email.$error">
<div ng-message="required" translate>This field is required.</div>
<div ng-message="email" translate>Email is not valid.</div>
</div>
</md-input-container>
</div>
<div layout="row">
<span flex></span>
<md-button
class="md-raised"
ng-click="cancel()">
<wb-icon>close</wb-icon>
<span translate>Cancel</span>
</md-button>
<md-button
class="md-raised"
ng-click="addUser(model)">
<wb-icon>done</wb-icon>
<span translate>Add</span>
</md-button>
</div>
</form>
В моем контроллере у меня есть функция с именем addUser(model), которая отправляет данные на сервер и получает некоторые коды проверки. Я устанавливаю соответствующие ключи в объектах $error, но относительные сообщения не отображаются. Я устанавливаю ключи следующим образом, если получаю сообщение об ошибке с сервера:
function addUser(model){
$myService.newUser(model)//
.then(function(user) {
// user is created successfully.
}, function(error) {
ctrl.myForm.$invalid = true;
ctrl.myForm.username.$error['unique'] = true;
ctrl.myForm.email.$error['email'] = true;
});
}
Я ожидаю, что когда я устанавливаю ключи, в форме появляются истинные связанные сообщения, но сообщение не отображается. В это время, если я изменяю значение поля, отображается сообщение, связанное с этим полем! Я не мог найти проблему.