Отключить кнопку, пока ввод недействителен Angular

Я хотел бы сделать определенные поля ввода доступными только для значений integer или decimal. Итак, я получил следующий код:

<input type = "text" pattern = "[0-9]*" [(ngModel)] = "myValue" pInputText class = "medium-field"
    (change) = "calculate()"/>

Таким образом, это поле отмечается, если шаблон не соответствует вводу. Тем не менее, я бы хотел отключить кнопку submit, пока шаблон не совпадает. Могу ли я каким-то образом получить доступ к этому значению как к логическому или есть другой способ?

Самый простой способ - это использовать Reactive Forms в Angular; но объяснение того, что это такое, вероятно, выходит за рамки ответа на вопрос. Альтернативный способ - активировать флаг buttonDisabled в вашей функции вычисления, который контролирует, отключена ваша кнопка или нет.

JeffryHouser 27.12.2018 01:52
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
1
2 059
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Если вы не хотите использовать реактивные формы, вы можете:

<input type = "text" pattern = "[0-9]*" [(ngModel)] = "myValue" #myInput />
<button [disabled] = "!myInput.validity.valid">Submit</button>

Это отключит вашу кнопку отправки, если HTML-валидность вашего ввода недействительна.

Здесь - рабочий пример.

Я также предлагаю вам использовать type = "number" в вашем input.

Форма будет автоматически помечена как недействительная, если введенные вами данные не совпадают с шаблоном.

Вы можете просто использовать:

<form novalidate
      #form = "ngForm">

     /* Your inputs */

     <button type = "button"
             [disabled] = "form.invalid">     // form as per the referenced #form = "ngForm"
                                            // Disables if your inputs are invalid or doesn't meet with its pattern
         Submit
     </button>

попробуйте проверить форму для него. используя * ngIf и

<button type = "submit" [disabled] = "form.invalid">SEND</button>

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