通过valueAccessor.writeValue()设置值后,表单控件无效状态未更改是因为valueAccessor.writeValue()方法只是用来设置表单控件的值,并不会触发表单控件的状态变化。表单控件的状态通常由Angular的FormControl对象来管理,它会根据表单控件的值和验证规则自动更新控件的状态。
要解决这个问题,可以手动调用FormControl对象的updateValueAndValidity()方法来更新控件的状态。updateValueAndValidity()方法会重新计算控件的状态,并触发相应的状态变化事件。
以下是一个示例代码:
import { Component, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms';
@Component({
selector: 'app-example',
template: `
<input type="text" [formControl]="myControl" />
`,
})
export class ExampleComponent implements OnInit {
myControl: FormControl;
ngOnInit() {
this.myControl = new FormControl();
// 设置表单控件的值
this.myControl.setValue('example value');
// 更新控件的状态
this.myControl.updateValueAndValidity();
}
}
在上面的示例中,我们创建了一个FormControl对象,并将其绑定到一个文本输入框上。然后,我们使用setValue()方法设置了表单控件的值,并通过updateValueAndValidity()方法更新了控件的状态。
这样,通过valueAccessor.writeValue()设置值后,表单控件的无效状态就会被正确地更新。
领取专属 10元无门槛券
手把手带您无忧上云