Форма угловой схемы - проверка массива

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

Для простоты давайте рассмотрим этот простой уникальный валидатор:

$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);

Здесь работает скрипка.

Другие вопросы по тегам