Angular ngModelChange是否应与自定义表单控件一起使用?

Angular ngModelChange是否应与自定义表单控件一起使用?,angular,typescript,Angular,Typescript,假设我正在制作一个自定义表单控件。我能做这个吗 <custom-control [ngModel]="myModelVariable" (ngModelChange)="modelHasChanged($event)"></custom-control> 经过仔细检查,一些有问题的组件没有在setter中调用onChangedCallback,因此出现了问题。其他方面没有得到正确的实施 很抱歉打扰您,Angular world。如果[(ngModel)]=“xxx”起作

假设我正在制作一个自定义表单控件。我能做这个吗

<custom-control [ngModel]="myModelVariable" (ngModelChange)="modelHasChanged($event)"></custom-control>

经过仔细检查,一些有问题的组件没有在setter中调用onChangedCallback,因此出现了问题。其他方面没有得到正确的实施

很抱歉打扰您,Angular world。

如果
[(ngModel)]=“xxx”
起作用,
(ngModelChange)=“xxx=$event”
也会起作用。我不知道是什么导致了这个问题。
@Component({
  selector: 'custom-control',
  providers: [
    { provide: NG_VALUE_ACCESSOR, useClass: CustomControlComponent, multi: true }
  ]
})
export class CustomControlComponent implements ControlValueAccessor {

  private onChangeCallback: (_: any) => void = (_: any) => {};
  private onTouchedCallback: () => void = () => {};

  private innerValue: any;

  get value(): any {
    return this.innerValue;
  }

  set value(val: any) {
    if (val !== this.innerValue) {
      this.innerValue = val;
      this.onChangeCallback(this.innerValue);
    }
  }

  writeValue(val: any) {
    if (val !== this.innerValue) {
      this.innerValue = val;
    }
  }

  registerOnChange(fn: any) {
    this.onChangeCallback = fn;
  }

  registerOnTouched(fn: any) {
    this.onTouchedCallback = fn;
  }

}