В настоящее время я работаю над повторно используемыми компонентами с пользовательскими элементами управления полями формы.
У меня есть этот пользовательский элемент управления автозаполнения, который возвращает объект в качестве значения, а затем мой повторно используемый компонент, используя этот пользовательский элемент управления, передает один из следующих элементов: свойства объекта для моей основной формы в виде строки. Вот блиц, чтобы проверить это:
https://stackblitz.com/edit/my-custom-autocomplete-jlkj9q
Это прекрасно работает в одном направлении, управление -> поле многократного использования -> форма.
Вот как я обновляю значение формы из моего повторно используемого компонента:
ngOnInit(){
this.state = new FormControl(null);
// any time the form field value changes update the parent of any change
this.state.valueChanges
.pipe(takeUntil(this._destroy))
.subscribe(value => {
if(!!value && !!value.name){
this.onChange(value.name) //pass only the state.name to the ControlValueAccessor
this.onTouched();
}
else{
this.onChange(value)
this.onTouched();
}
});
}
Теперь, когда я устанавливаю значение по умолчанию для поля компонента многократного использования, элемент управления корректно обновляется, но форма значение не Я попытался вызвать метод onChange()
для ngOnInit
со значением, которое должно быть передано в основную форму, но ничего не произошло. Затем я попытался установить значение по умолчанию для ngAfterViewInit и вызвать onChange
следующим образом:
ngAfterViewInit(){
let defaultValue = {
"name": "Arkansas",
"population": "2.978M",
"flag": "https://upload.wikimedia.org/wikipedia/commons/9/9d/Flag_of_Arkansas.svg"
};
this.state.setValue(defaultValue);
this.onChange(defaultValue);
}
, но это тоже не работает.
Что мне здесь не хватает? Любые подсказки?