Angular自定义表单控件不能更新表单值。
创始人
2024-11-01 10:30:34
0

在自定义表单控件代码中,确保使用ControlValueAccessor提供的回调方法及时更新表单控件值。例如:

import { Component, forwardRef } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';

@Component({
  selector: 'app-custom-input',
  template: `
    
  `,
  providers: [
    {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => CustomInputComponent),
      multi: true
    }
  ]
})
export class CustomInputComponent implements ControlValueAccessor {
  value: string;
  onChange: (value: string) => void;
  onTouched: () => void;

  writeValue(value: any): void {
    this.value = value;
  }

  registerOnChange(fn: (value: string) => void): void {
    this.onChange = fn;
  }

  registerOnTouched(fn: () => void): void {
    this.onTouched = fn;
  }
  
  // 自定义方法,用于更新控件值
  updateValue(value: string) {
    // 更新内部值
    this.value = value;
    // 更新表单值
    if (this.onChange) {
      this.onChange(value);
    }
  }
}

在上面的代码中,我们实现了一个简单的自定义输入框组件CustomInputComponent,并使用ControlValueAccessor接口来定义它的行为。在组件中,我们提供了一个updateValue方法,用于在输入框的值发生变化时,更新组件内部的value值并调用onChange回调函数,更新表单控件的值。

上述方法可以确保自定义表单控件中的值能够正确地更新到表单中。在使用自定义表单控件时,我们可以像使用普通的input控件一样,使用[(ngModel)]指令来绑定组件值,并在需要时调用updateValue方法以更新值。例如:

相关内容

热门资讯

透视有挂"wepok... 透视有挂"wepoker轻量版辅助"都是是有辅助插件(哔哩哔哩)1、进入到wepoker轻量版辅助是...
透视解迷"wepok... 透视解迷"wepoker怎么买辅助"确实真的有辅助器(哔哩哔哩)一、wepoker怎么买辅助游戏安装...
透视必备"wpk软件... 透视必备"wpk软件是正规的吗"果然存在有辅助脚本(哔哩哔哩)1、下载好wpk软件是正规的吗脚本下载...
透视透视"We po... 透视透视"We poker辅助器下载"竟然真的是有辅助脚本(哔哩哔哩)1.We poker辅助器下载...
透视必备"wepok... 透视必备"wepoker透视版下载"都是有辅助器(哔哩哔哩)运wepoker透视版下载辅助工具,进入...
透视分享"聚星ai辅... 透视分享"聚星ai辅助工具下载"好像是有辅助工具(哔哩哔哩)在进入聚星ai辅助工具下载软件靠谱后,参...
透视有挂"hhpok... 透视有挂"hhpoker辅助挂是真的吗"真是真的是有辅助神器(哔哩哔哩)1、该软件可以轻松地帮助玩家...
透视解谜"智星德州插... 透视解谜"智星德州插件最新版本更新内容详解"切实真的有辅助脚本(哔哩哔哩)1、透视解谜"智星德州插件...
透视辅助"wepok... 透视辅助"wepoker底牌透视"都是是真的辅助神器(哔哩哔哩)1、用户打开应用后不用登录就可以直接...
透视辅助"wepok... 透视辅助"wepoker透视脚本苹果版"一直是有辅助方法(哔哩哔哩)1)wepoker透视脚本苹果版...