Angular的patchValue()方法不会更新Ant Design自定义表单控件。
创始人
2024-10-24 08:31:50
0次

在使用Angular的patchValue()方法更新Ant Design自定义表单控件时,可能会遇到无法更新的问题。这是因为Ant Design自定义表单控件可能需要使用setValue()方法来更新值,而不是使用patchValue()方法。

以下是一个解决方法的示例代码:

在自定义表单控件的组件中,实现ControlValueAccessor接口,并在writeValue()方法中使用setValue()方法更新值:

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

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

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

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

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

  updateValue(value: any) {
    this.value = value;
    this.onChange(value);
    this.onTouched();
  }
}

然后,在父组件中,使用ViewChild来获取自定义表单控件的实例,并调用updateValue()方法来更新值:

import { Component, ViewChild } from '@angular/core';
import { FormGroup, FormBuilder } from '@angular/forms';
import { CustomControlComponent } from './custom-control.component';

@Component({
  selector: 'app-root',
  template: `
    
` }) export class AppComponent { @ViewChild('customControl') customControl: CustomControlComponent; form: FormGroup; constructor(private fb: FormBuilder) { this.form = this.fb.group({ customValue: [''] }); } updateValue() { const value = 'new value'; this.customControl.updateValue(value); this.form.patchValue({ customValue: value }); } }

在父组件中,我们使用ViewChild来获取自定义表单控件的实例,并在updateValue()方法中调用updateValue()方法来更新值。然后,我们使用patchValue()方法来更新表单控件的值。这样,无论是在自定义表单控件中还是在表单中,都能正确地更新值。

相关内容

热门资讯

发现玩家外挂!微乐广西麻将外挂... 发现玩家外挂!微乐广西麻将外挂AI软件,微乐广西麻将多功能好像是真的有外挂软件微乐广西麻将破解侠是真...
揭秘攻略外挂!领悟棋牌外挂AI... 揭秘攻略外挂!领悟棋牌外挂AI教程,领悟棋牌多功能其实是真的有外挂教程领悟棋牌破解侠是真的助透视。每...
玩家必用辅助器!星聚辅助器AI... 玩家必用辅助器!星聚辅助器AI方法,星聚多功能原来有辅助器方法1、该软件可以轻松地帮助玩家将星聚辅助...
一分钟揭秘开挂!虾兵蟹将开挂A... 一分钟揭秘开挂!虾兵蟹将开挂AI方法,虾兵蟹将多功能果然真的有开挂方法1、该软件可以轻松地帮助玩家将...
科技新动态透视挂!纵横互娱透视... 科技新动态透视挂!纵横互娱透视挂AI脚本,纵横互娱多功能总是真的有透视挂脚本1、玩家可以在纵横互娱透...
总算了解开挂!萍乡打滚筒开挂A... 总算了解开挂!萍乡打滚筒开挂AI攻略,萍乡打滚筒多功能其实是有开挂攻略1)萍乡打滚筒辅助插件:进一步...
我来向大家传授作弊器!奇趣互娱... 我来向大家传授作弊器!奇趣互娱作弊器AI工具,奇趣互娱多功能好像真的有作弊器工具1、不需要AI权限,...
玩家必备教程辅助!小白大作战辅... 玩家必备教程辅助!小白大作战辅助AI工具,小白大作战多功能都是存在有辅助工具玩家必备教程辅助!小白大...
来一盘辅助!纵横互娱辅助AI脚... 来一盘辅助!纵横互娱辅助AI脚本,纵横互娱多功能切实是有辅助脚本1、纵横互娱透视辅助软件激活码多个强...
一分钟揭秘辅助!残局斗地主辅助... 一分钟揭秘辅助!残局斗地主辅助AI插件,残局斗地主多功能真是真的有辅助插件1、下载好残局斗地主透视辅...