Форма автозаполнения Angular 5 Keyup vs keydown vs keypress

Привет, я использую реактивную форму, и у меня есть раздел, где я хочу заполнить значения в другом поле.

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

вот живой пример моего кода.

https://stackblitz.com/edit/angular-5l9kb4

попробуйте использовать property binding[value] = "myForm.get('email').value"

Sunil Kashyap 18.06.2019 07:49
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
1
125
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Обновлено

fillForm() {
  this.myForm.valueChanges.subscribe(value => {
    //I'm using .controls and .get, but both work here. Pick the one you prefer
    this.myForm.controls['second_phone'].setValue(value.phone, { emitEvent: false});
    this.myForm.get('second_email').setValue(value.email, { emitEvent: false});
  });
}

Вы также можете использовать { onlySelf: true } в setValue, если это необходимо (см. Angular 2 - параметр FormControl setValue 'onlySelf')

и удалите: value = "{{myForm.get('email').value}}" из дополнительных полей в ваших шаблонах.


Не лучший подход

Попробуй это:

fillForm() {
    this.myForm.valueChanges.subscribe(value => {
      if ((!value.second_email && value.email) || (!value.second_phone && value.phone)) {
          value.second_phone = value.phone;
          value.second_email = value.email;
      } 
    });
  }

Хорошо, я действительно воспользовался тем, что вы использовали value = "{{myForm.get('email').value}}" в своем шаблоне для дополнительного поля. Поскольку я на самом деле никогда не устанавливаю значение ваших вторичных полей, это работает с вашим оператором if. Но теперь, когда я подумал об этом, я понял, что это довольно грязная и плохая практика. Я обновил решение с помощью лучшего подхода, который более логичен.

Jojofoulk 18.06.2019 08:22

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

Muhammad Ali 18.06.2019 08:25

идеально! хотел бы я проголосовать за ваш ответ несколько раз

Muhammad Ali 18.06.2019 08:30

Я рад, что это помогло :)

Jojofoulk 18.06.2019 08:30

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