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





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. Но теперь, когда я подумал об этом, я понял, что это довольно грязная и плохая практика. Я обновил решение с помощью лучшего подхода, который более логичен.
спасибо теперь работает! но у вас есть другая рекомендация, которую я пытаюсь придумать с лучшей практикой
идеально! хотел бы я проголосовать за ваш ответ несколько раз
Я рад, что это помогло :)
попробуйте использовать
property binding[value] = "myForm.get('email').value"