angular ng-автозаполнение не устанавливает начальное значение, если находится в форме

#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 /…