import { ChangeDetectorRef, EventEmitter } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; import { Observable, ReplaySubject } from 'rxjs'; /** * form control 内部不保持 value 属性,当不使用 ngModel 时可以通过 [(value)] 实现双向绑定; * 也可以分别传入 value 和 监听 valueChange 事件以实现阻断用户操作的功能。 */ export declare abstract class CommonForm implements ControlValueAccessor { protected cdr: ChangeDetectorRef; disabled: boolean; value: T; valueChange: EventEmitter; protected onChange: (_: T) => void; protected onTouched: () => void; protected value$$: ReplaySubject; private _value; private _disabled; value$: Observable; constructor(cdr: ChangeDetectorRef); protected emitValueChange(value: T): void; registerOnChange(fn: (_: T) => void): void; registerOnTouched(fn: () => void): void; setDisabledState(isDisabled: boolean): void; abstract writeValue(value: T): void; }