Как установить значение элемента в директиве?

Я работаю над директивой для автоматической вкладки между элементами всякий раз, когда нажимается maxLength элемента. Но сначала я пытаюсь выяснить, как убедиться, что элемент не может иметь значение, длина которого больше, чем максимальная длина элемента.

Вот что я пробовал до сих пор:

  if (el.value.length >= el.maxLength) {
    el.value = el.value.substr(0, el.maxLength);
  }

Если я устанавливаю точку останова и прохожу через нее, сразу после выполнения этого el.value устанавливается правильно, но в представлении он по-прежнему позволяет пользователю печатать.


person Alex Kibler    schedule 22.06.2016    source источник
comment
Не будет ли атрибут maxLength ограничивать длину значения, зачем вам это условие el.value.length >= el.maxLength?   -  person null canvas    schedule 22.06.2016


Ответы (1)


Динамическое изменение атрибутов валидатора в настоящее время не поддерживается. Они должны быть добавлены статически (без привязки []) и считываются только один раз при создании экземпляра элемента управления.

Вы можете сделать это с формами, используя FormBuilder и валидатор, который имеет ссылку на другие значения, которые могут повлиять на проверку, как показано в Как изменить проверку элемента управления после его инициирования?

person Günter Zöchbauer    schedule 22.06.2016
comment
Я действительно не считаю это валидатором, я просто пытаюсь заставить значение - person Alex Kibler; 22.06.2016
comment
См. также stackoverflow.com/questions/37800841/ Ваш вопрос недостаточно ясен для меня, чтобы предложить лучшие варианты. - person Günter Zöchbauer; 22.06.2016
comment
Я не уверен, как я могу это прояснить. Всякий раз, когда пользователь вводит ввод, я проверяю, превышает ли длина входного значения максимальную длину ввода. Если это так, я хочу обрезать значение ввода, чтобы оно соответствовало максимальной длине. Итак, если у меня есть поле, максимальная длина которого равна 5, пользователь не может ввести более 5 символов. В jQuery я бы сделал $("#element").val($("#element").val().substr(0,maxlength)) - person Alex Kibler; 22.06.2016
comment
Похоже, подход в связанном вопросе должен подойти. - person Günter Zöchbauer; 22.06.2016
comment
Хм, да, я думаю, что это может быть. Я проверю это сейчас. Спасибо! - person Alex Kibler; 22.06.2016
comment
Вы можете добавить @Input()maxLength;, чтобы получить настройку из элемента. - person Günter Zöchbauer; 22.06.2016