setDisabledState(disabled: boolean) { if (disabled) this.innerForm.disable({emitEvent:false}); else this.innerForm.enable({emitEvent:false}); } The problem: when bound control is enabled, this custom value acc
实现ControlValueAccseeor 在一个组件中拓展 ControlValueAccessor 接口需要实现三个方法:writeValue,registerOnChange 和registerOnTouched。除此之外,还有一个名为 setDisabledState 的方法可选实现。 writeValue 函数在以下两种场景下被调用: formControl 被初始化时 rating = new FormControl({value: null, disabled:...
setDisabledState(isDisabled: boolean): void { // 我们将新的禁用状态绑定到 // 内部(自定义)"disabled" 字段 // 这是你通常要用这个函数做的事情 // 但不是强制性的 this.disabled = isDisabled; } // 每当表单控件的值发生变化时都会调用此方法 writeValue(newValue: string): void { // 你希望对...
禁用输入 -setDisabledState 这四个内容构成了ControlValueAccessor接口,它是表单控件和原生元素或自定义输入组件之间的桥梁。一旦我们的组件实现了该接口,我们需要告诉 Angular 通过提供它作为NG_VALUE_ACCESSOR来使用它。 在代码编辑器中重新查看rating-input.component.ts,并进行以下更改: import { Component, forwardRef...
interface ControlValueAccessor { writeValue(obj: any): void registerOnChange(fn: any): void registerOnTouched(fn: any): void setDisabledState(isDisabled: boolean)?: void } 2.1 writeValue writeValue(obj: any): void 该方法用于将值写入到自定义表单控件中的元素; ...
interface ControlValueAccessor { writeValue(obj: any):voidregisterOnChange(fn: any):voidregisterOnTouched(fn: any):voidsetDisabledState(isDisabled:boolean)?:void} 2.1 writeValue writeValue(obj: any):void 该方法用于将值写入到自定义表单控件中的元素; ...
理解ControlValueAccessor 用官方的话来说,ControlValueAccessor是充当 Angular 表单 API 和 DOM 中的原生元素之间的桥梁 这个接口提供了四个方法 interfaceControlValueAccessor{writeValue(obj:any):voidregisterOnChange(fn:any):voidregisterOnTouched(fn:any):voidsetDisabledState(isDisabled:boolean)?:void} ...
在v15 中,附加ControlValueAccessor时总是会调用setDisabledState。 你可以用FormsModule.withConfig或ReactiveFormsModule.withConfig选择退出此行为。 canParse 方法已被删除 canParse方法已从@angular/localize/tools中的所有翻译解析器中删除。在 v15 中,要用analyze代替,并且 parse 方法中的hint参数变成了强制性的。
比如input是设置value值,而checkbox是设置checked属性。 因此不同类型的输入控件都有一个ControlValueAccessor来更新视图 export interfaceControlValueAccessor{ writeVlaue(obj:any):void;//model->viewregisterOnchange(fn:any) :void;//view->modelregisterOnTouched(fn:any):void;setDisabledState?( isDisabled:boolean...
interfaceControlValueAccessor{writeValue(obj:any):void//数据由模型更新到视图(model->view)时,方法被调用registerOnChange(fn:any):void//数据由视图更新到模型(view->model)时,方法被调用registerOnTouched(fn:any):voidsetDisabledState(isDisabled:boolean)?:void} ...