假设我们有一个名为myForm的FormGroup对象,并且我们想将其值设置为特定的字符串"N/A"。我们可以使用以下代码:
import { FormGroup, FormControl } from '@angular/forms';
const myForm = new FormGroup({
myControl: new FormControl('')
});
myForm.setValue({
myControl: 'N/A'
}, { emitModelToViewChange: true });
请注意,我们使用了emitModelToViewChange选项,这将触发值更改的状态更改检测。这将确保将表单控件的值正确更新。
此外,为了支持更多字符串值,我们还可以创建一个自定义表单控件,该控件将接受任何字符串值。例如:
import { Component, Input, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';
@Component({
selector: 'custom-input',
template: `
`,
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => CustomInputComponent),
multi: true
}
]
})
export class CustomInputComponent implements ControlValueAccessor {
@Input() disabled = false;
value: string;
onChange = (_: any) => {};
onTouched = () => {};
writeValue(value: string): void {
this.value = value;
}
registerOnChange(fn: (_: any) => void): void {
this.onChange = fn;
}
registerOnTouched(fn: () => void): void {
this.onTouched = fn;
}
setDisabledState(isDisabled: boolean): void {
this.disabled = isDisabled;
}
}
我们现在可以使用此自定义控件来设置字符串值:
const myForm = new FormGroup({
myControl: new FormControl('')
});
myForm.setValue({
myControl: 'N/A'
}, { emitModelTo
上一篇:Angular-FormcontrolnameanditsvalidationfromTableGrid”
下一篇:Angular-fromEventhandsout'Cannotreadproperty'nativeElement'ofundefined'