Какое событие будет вызываться на входе ПОСЛЕ обновления всех значений реактивных форм - PullRequest
0 голосов
/ 24 мая 2018

Как правильно в Angular (v.5 или v.6) генерировать событие после изменения конкретного ввода реактивной формы?

Я уже пробовалэто относится :

  1. (ngModelChange)="doSomething($event)" (html, основное событие)

  2. (bsValueChange)="doSomething($event)" (html, ngx-bootstrap конкретное событие)

  3. базовое решение для реактивной формы для одного входа - подпишитесь на событие (ts), например:

this.reactiveForm.get('inputName').valueChanges.subscribe(
  value => { this.doSomething(value); }
);

Но ничего не работает во всех ситуациях.

Проверка:

  1. установить входное значение A

  2. изменить входное значение на 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, но она также не работает для чистого ввода реактивной формы.

1 Ответ

0 голосов
/ 24 мая 2018

Atiris, ответ: 3.

Но посмотрите, что отличается

this.reactiveForm.value['testDateE'] //or this.reactiveForm.value.testDateE

от

this.reactiveForm.get('testDateE').value;

Это причина, потому что если вы хотите проверитьнекоторые в html вы должны использовать вторым способом.Когда мы отправляем отправку, мы отправляем реактивную-форму-реактив.value, и никаких проблем не возникает. Если вы напишите {{реактивный-форм-код.value | json}}, вы увидите фактические значения

...