Javascript 具有初始值的FormGroup和验证器不工作
我在ts文件中创建了一个表单组:Javascript 具有初始值的FormGroup和验证器不工作,javascript,angular,Javascript,Angular,我在ts文件中创建了一个表单组: datenForm: FormGroup; ngOnInit(): void { this.datenForm = this.formBuilder.group( { beginDatum: ['29/03/2019', [Validators.required, this.checkMonth]], endDatum: ['29/03/2020', [Validators.required, this.ch
datenForm: FormGroup;
ngOnInit(): void {
this.datenForm = this.formBuilder.group(
{
beginDatum: ['29/03/2019', [Validators.required, this.checkMonth]],
endDatum: ['29/03/2020', [Validators.required, this.checkSomething]],
username: ['pedro', [Validators.required, this.checkName]],
},
);
}
我在formsgroup中创建了3个值,我想为每个值使用一个验证器,所以我创建了3个验证器checkMonth、checkSomething、checkName
我在ts中创建了验证器:
checkMonth(group: FormGroup) {
console.log(group.get("beginndatum").value);
}
checkSomething(group: FormGroup) {
return false;
}
在这里,我只想尝试一下验证器(当我知道它是如何工作的时候,我将编写正确的验证器)
在我的html文件中,我这样使用它:
<datepicker
(datepickerChanged)="changeInfo(beginDatum)"
#beginDatumId="beginDatum"
invalid="{{datenForm.get('beginDatum').invalid && datenForm.get('beginDatum').dirty}}"
error=""
name="beginDatum"
value="{{datenForm.get('beginDatum').value}}">
</datepicker>
但我的checkValidator不工作,我可以将return设置为true或false,这不会让我出错
如何使用具有初始值的验证器并将其与组件绑定
group()
方法需要一组子控件。因此,beginDatum
,endDatum
和username
都是formControlName
输入,如下所示:…
checkMonth()
并且您的每个验证方法都需要一个FormGroup
,但它们应该需要一个FormControl
,因为这才是它们真正收到的顺便说一句,我强烈建议您阅读一些关于和表单的文档,因为您似乎将它们混合了一点。如果您将验证程序添加到FormControl,则参数是自己的FormControl(而不是formGroup)。此外,如果一切正常,自定义验证器必须返回null(非false),如果对象或值无效,则必须返回null。谢谢,您还可以检查我的html,因为验证器无效……我不知道您的
datepicker
组件,但如果自定义formControl实现得很好,您应该使用formControlName=“beginDatum”
或[formControl]=“
datenForm.get('beginDatum')”。然后您可以忘记(日期选择器更改)
和值。Is是javascript中的日期选择器,在函数(datepickerChanged)
中,您需要使用this.datenForm.get('beginDatum').setValue(beginDatum.value)
或类似的函数为formControl赋值
checkMonth(group: FormGroup) {
if (group.get("beginndatum") == null) {
return false;
}
return true;
}