Форма угловой схемы - проверка массива
Я пытаюсь создать массив уникальных значений, используя форму схемы, но это кажется невозможной задачей.
Для простоты давайте рассмотрим этот простой уникальный валидатор:
$scope.validateUnique = function(value) {
console.log('running validation');
var sameName = $scope.model.NoDuplicate.filter(function(item) {
return item.key === value;
});
return sameName.length < 2;
}
Откройте консоль и посетите эту скрипку.
Шаг 1: Добавьте новый элемент с именем 1.
Шаг 2: Добавьте новый предмет под названием 12.
Шаг 3: Добавьте новый элемент с именем 123.
Шаг 4: Добавьте новый предмет с именем 1234.
Все идет нормально.
Шаг 5: Измените первый элемент (1) на 1234, чтобы появилось сообщение об ошибке.
Шаг 6: Удалите последний элемент, чтобы первый снова стал уникальным. Но ничего не происходит. Массив не проверяется снова после удаления элемента, и даже если вы нажмете кнопку отправки, которая должна вызвать проверку формы, ничего не произойдет.
Является ли эта проблема моей ошибкой? Есть ли какая-то ошибка в моем примере кода? Или это какая-то ошибка в форме схемы? Как я могу добиться повторной проверки массива либо при удалении элемента, либо при отправке формы? Спасибо!
1 ответ
Решаемые. Я не горжусь этим решением, поскольку проверка массива формы Angular Schema нарушена, и я не смог найти лучшего решения.
Я добавил это в директиву формы
$scope.$watch('formState', () => {
TestStartActions.updateFormStateFromForm(newVal);
angular.forEach($scope.testStartForm.$error.runtimeUnique, (field) => {
field.$validate();
});
}, true);
Здесь работает скрипка.