Angular的ValueChanges不更新父组件表单(ControlValueAccessor)
创始人
2024-10-24 10:31:18
0

在实现ControlValueAccessor时,可能会遇到这样的问题:当我们在子组件改变了ControlValueAccessor所绑定的FormControl的值时,该值无法自动同步更新到父组件的表单。这时需要在子组件中手动触发值变化事件。请参考下面的代码示例:

父组件模板:

父组件代码:

import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';

@Component({
  selector: 'app-my-app',
  template: `
    
` }) export class MyApp implements OnInit { myForm: FormGroup; ngOnInit() { this.myForm = new FormGroup({ myControl: new FormControl('') }); } }

子组件模板:


子组件代码:

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

@Component({
  selector: 'app-my-component',
  template: `
    
  `,
  providers: [
    {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => MyComponent),
      multi: true
    }
  ]
})
export class MyComponent implements ControlValueAccessor {
  @Input()
  value: string;

  private onChange: (value: string) => void;
  private onTouch: () => void;

  onBlur() {
    this.onTouch();
  }

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

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

  registerOnTouched(onTouch: () => void): void {
    this.onTouch = onTouch;
  }
  
  // 增加一个方法手动触发值变化事件
  public triggerValueChanges() {
    this.onChange(this.value);
  }
}

在父组件中,使用ViewChild获取子组件实例,并手动触发值变化事件:

import { Component, AfterViewInit, ViewChild } from '@angular/core';
import

相关内容

热门资讯

玩家必看秘籍!福建天天开心辅助... 玩家必看秘籍!福建天天开心辅助,传送屋高仿版辅助(有挂分析开挂辅助安装)您好:福建天天开心辅助这款游...
透视苹果版!相约十三水破解,p... 相约十三水破解是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微信...
交流学习经验!四川途游小程序辅... 大家好,今天小编来为大家解答四川途游小程序辅助软件这个问题咨询软件客服可以免费测试直接加微信(136...
透视黑科技!pokermast... 大家好,今天小编来为大家解答wepoker有辅助工具吗这个问题咨询软件客服可以免费测试直接加微信(1...
热点推荐!悠闲碰碰辅助,微友辅... 微友辅助器免费版是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微...
透视真的!潮汕掌上娱透视,德普... 透视真的!潮汕掌上娱透视,德普之星辅助器怎么用(辅助挂)详细开挂辅助软件1、下载安装好德普之星辅助器...
避坑细节!途游游戏辅助软件,钱... 避坑细节!途游游戏辅助软件,钱塘十水三挂件(有挂方针辅助下载);无需打开直接搜索薇:13670430...
透视能赢!途游游戏辅助器免费,... >>您好:途游游戏辅助器免费确实是有挂的,很多玩家在这款途游游戏辅助器免费游戏中打牌都会发现很多用户...
一分钟揭秘!重要科技阿拉斗牌辅... 【亲,重要科技阿拉斗牌辅助 这款游戏可以开挂的,确实是有挂的,很多玩家在这款重要科技阿拉斗牌辅助中打...
透视透明!边锋干瞪眼脚本,hh... 您好:这款hhpoker的辅助是真的吗游戏是可以开挂的,确实是有挂的,很多玩家在这款hhpoker的...