Метод 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;
}
}