angular - FormControl olarak kullanıldığında Mat Autocomplete giriş değerini ayarlamıyor
Özel bir otomatik tamamlama bileşenim var ve bu bileşen ControlValueAccessor uyguluyor. Üst bileşenden değeri form.get('productName').setValue('Ürün 1'); kullanarak ayarlamaya çalışıyorum. Bu, formdaki değeri ayarlıyor ama otomatik tamamlama ile ilişkili inputta yansımıyor.
Input değerinin görüntülenmediğini gösteren bir stackblitz örneğim var. [matAutocomplete]="auto" özniteliğini input'tan kaldırır kaldırmaz, değer UI'da görünür hale geliyor.
https://stackblitz.com/edit/angular-autocomplete-form-control?file=src%2Fapp%2Fapp.component.ts
Burada bahsettiklerini denedim ama yine de başarılı olamadım - https://stackoverflow.com/a/56073917/4142653
Cevap #1
Başlangıç değeri inputta yansıtılmıyor çünkü değeri bir obje olarak işleyen ve string üzerinde obj.name özelliğini bulmaya çalışan displayFn dönüştürücüyü kullanıyorsunuz.
Değerinizi mat-autocompelte için product.name olarak ayarladığınız için displayFn kullanmanıza hiç gerek yok.
Tamam, giriş metnini doldurabiliyorsunuz. Şimdi, ControlValueAccessor uygulamanızı bitirmeniz gerekiyor.
Değeri ana denetim değerine iletmek istiyorsanız çağrılması gereken özel bir onChange yöntemi vardır.
Bu, ana denetim değerini güncellemek istediğinizde onChange yöntemini çağırmanız gerektiği anlamına gelir. Mat-autocomplete durumunda optionSelected'i dinleyebilirsiniz:
<mat-autocomplete ... (optionSelected)="onChange($event.option.value)">
Çatallanmış Stackblitz
