создайте какой-нибудь адаптер, соответствующий входам и выходам сторонних производителей

#angular #controlvalueaccessor

Вопрос:

У меня есть один сторонний компонент, который принимает массив[объект] в ngModel и вносит в него изменения. Я использую его только для одного значения, поэтому я хочу, чтобы он просто принимал объект.введите описание изображения здесь

Я написал компонент с ControlValueAccessor помощью . Это делает ввод и вывод изменений. это выбор автозаполнения. Проблема здесь в том, что когда я выбираю какое-то значение записи, называемое null, а затем объектом(а иногда бесконечным циклом, который убивает страницу). Я не хочу вызывать writevalue во время выбора пользователем. Вот мой компонент выглядит так

 lt;sky-input-boxgt;  lt;label *ngIf="label" class="sky-control-label"gt;  {{label}}  lt;/labelgt;  lt;sky-lookup   selectMode="single"   [propertiesToSearch]="propertiesToSearch"  [search]="search()"  [searchResultTemplate]="searchResultTemplate"   [descriptorProperty]="descriptorProperty"   [attr.name]="name"  [attr.id]="id"   [(ngModel)]="value"   (ngModelChange)="modalChange($event)"gt;  lt;/sky-lookupgt; lt;/sky-input-boxgt;  export class LookupSingleModeComponent implements OnInit, ControlValueAccessor {  constructor() { }  @Input() label?: string;  @Input() searchFilters: any;  @Input() propertiesToSearch: string[];  @Input() search: any;  @Input() searchResultTemplate: any;  @Input() descriptorProperty: string;  @Input() name: string;  @Input() id: string;  value: any[];  ngOnInit(): void { }   writeValue(obj: any): void {  this.value = obj ? [obj] : [];  }   registerOnChange(fn: any): void {  this.onChange = fn;  }   registerOnTouched(fn: any): void {  this.onTouched = fn;  }   setDisabledState?(isDisabled: boolean): void {  }   onChange: any = () =gt; { };  onTouched: any = () =gt; { };   modalChange: any = () =gt; {  this.onChange(Array.IsArray(this.value) ? this.value[0] : undefined);  } }   ``  

Комментарии:

1. Это было решено на самом деле, мой компонент снова и снова инициализировался после выбора значения, которое запускает maodel/viewchange. Тем не менее, я держу его здесь для лучшего решения. Я также изменил его на реактивный подход, не знаю, почему он работает.