Как правильно в Angular (v.5 или v.6) генерировать событие после изменения конкретного ввода реактивной формы?
Я уже пробовалэто относится :
(ngModelChange)="doSomething($event)"
(html, основное событие)
(bsValueChange)="doSomething($event)"
(html, ngx-bootstrap конкретное событие)
базовое решение для реактивной формы для одного входа - подпишитесь на событие (ts), например:
this.reactiveForm.get('inputName').valueChanges.subscribe(
value => { this.doSomething(value); }
);
Но ничего не работает во всех ситуациях.
Проверка:
установить входное значение A
изменить входное значение на B
Ожидаемое поведение:
- Все
reactiveForm.value
элементы в методе doSomething()
имеют текущие значения .
Результаты:
Подход 1 .не возможно смоделировать эту ошибку в демо.Это работает в моей демоверсии , но не работает в моем большом проекте.После того, как я установил первую дату A
, а затем выбрал дату B
, мой "doSomething"
, который записывает фактическую дату поля (и значение $ event) в реактивной форме, возвращает A
для фактического значения поля.Демонстрация работает нормально, но я не знаю, почему я не могу добиться такого поведения в своем проекте.
Подход 2 .не работает вообще.Это специфическое событие для ngx-bootstrap, но после выбора даты B
я снова получаю в журнале дату A
.
Подход 3 .не работает вообще.Это чисто реактивная форма раствора.Вы можете проверить это на моем демо на последнем входе.Если вы наберете A
, а затем B
, войдите в систему с reactiveForm.value['item']
, после того как вы наберете B
, будет только A
.Таким образом, даже если вы подпишетесь на valueChanges
событие входа в реактивную форму, значение не изменится.
Мой вопрос:
Что я могу использовать, чтобы перехватить событие для одного поля реактивной формы после Значения этой реактивной формы обновляются?
Вот ДЕМО-код StackBlitz с примером
PS: Прежде всего, я думал, что этопроблема расширения ngx-bootstrap
, но она также не работает для чистого ввода реактивной формы.