#angular
#angular
Вопрос:
Я использую ng autocomplete в проекте, и все это работает нормально. Сегодня я обнаружил проблему и не могу найти обходной путь.
в принципе, если автозаполнение находится внутри реактивной формы, свойство «initialValue» не работает. Я искал в Интернете, но не нашел ничего полезного.
Я создал stackblitz, который демонстрирует мою проблему:https://stackblitz.com/edit/angular-ivy-crrlnv
Я буду более чем счастлив, если кто-нибудь сможет мне помочь?
Заранее благодарю.
Редактировать: найдите обходной путь с помощью patchValue, но если бы мне пришлось установить другое значение после серверного вызова, patchValue не работает … странно…
Комментарии:
1. Ps. Я уже пробовал setValue(), но безуспешно
Ответ №1:
Вы присвоили вашему первому FormControl внутри FormGroup значение по умолчанию в виде пустой строки: (таким образом, у вас возникает конфликт с начальным значением ng-autocomplete и начальным значением FormControl)
this.providerForm = this.fb.group({
test: ['']
});
измените его на:
test: this.initialValue.name
и начальное значение будет работать (вы можете удалить начальное значение ng-autocomplete).
Комментарии:
1. спасибо за ваш ответ, но это не то, что я имею в виду. В реальном приложении у меня есть внутренний вызов, и после ответа я должен инициализировать поле. Но, тестируя какое-то решение, я обнаружил, что patchValue работает, но только если я установил значение автозаполнения. Если я задаю другое поле, автозаполнение перестает работать. действительно странно
2. Нет проблем. Я не уверен, что понимаю на 100%, я пытался использовать patchValue в ngOnInit (в вашем примере вы присвоили значение FormControl в конструкторе), и это сработало. Также пытался присвоить значение новому полю с помощью pathValue, и это сработало, и автозаполнение продолжало работать.
3. @Davide.77 как сказал зоар, просто используйте :
this.providerForm.get('test').patchValue(this.initialValue.name)
когда вы получаете данные с сервера. также удалитеinitiavalue=...
свойство изng-autocomplete
, поскольку вы привязываете к нему элемент управления формой. вы можете увидеть это здесь: stackblitz.com/edit /…