Метод writeValue не запускается, если через какое-то время обновляются свойства ngModel

Пока я реализовывал ControlValueAccessor, я столкнулся с одним сценарием, в котором метод writeValue не запускается, если я обновляю значение свойства [(NgModel)] через некоторое время, ниже приведены сценарии.

parent.component.html

      <app-multiselect ngDefaultControl [options]="list" [(ngModel)]="selectedOption"> </app-multiselect>

parent.component.ts

      export class ParentComponent implements OnInit {

selectedOption: any = [];

constructor() { }

ngOnInit() {

    setTimeout(() => { this.selectedOption = [{id: 0, name:'Dropdown Value 1', key:2}]},100);

   }

}

Child.component.html (с использованием компонента множественного выбора Primeng)

      <p-multiselect [options]="options" [(ngModel)]="value"> </p-multiselect>

Child.component.ts

      export class ChildComponent implements ControlValueAccessor
{
@input() options: any;
selectedValue: any;
constructor() { }
set value(val){
if(val !== null && this.selectedValue !==val)
{
  this.selectedValue = val;
  this.onChange(val);
  this.onTouch(val);
}
onChange = (val) => {}
onTouch = (val) => {};

writeValue(value: any)
{
  this.value = value; // here always get 'null' but expecting [{id: 0, name:'Dropdown Value 1', key:2}]
}

registerOnChange(fn: any) {
 this.onChange = fn;
}
registerOnTouched(fn: any){
 this.onTouch = fn;
}

}

0 ответов

Другие вопросы по тегам